2 条题解

  • 0
    @ 2025-10-8 16:54:07
    #include<bits/stdc++.h>
    using namespace std;
    int dx[4]={0,1,0,-1};
    int dy[4]={1,0,-1,0};
    int c[21][21],a[510],alen;
    char s[110];
    
    void change(int x)
    {
        int now=alen;
        while(x>0)
        {
            a[now--]=x%2;
            x/=2;
        }
    }//转2进制 
    int main()
    {
        int n,m;scanf("%d%d ",&n,&m);//避免输入错误多一个空格 
        cin.getline(s+1,100); 
        int len=strlen(s+1);
        memset(a,0,sizeof(a));
        alen=0;
        for(int i=1;i<=len;i++)
        {
            int x=(s[i]==' ') ?0:(s[i]-'A'+1);
            alen+=5;change(x);
        }//字母转数字再转2进制 
        memset(c,0,sizeof(c));
        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) c[i][j]=2;//初始化 
        c[1][1]=a[1];
        int k=2,x=1,y=1,t=0;
        while(k<=n*m)
        {
            while(c[x+dx[t]][y+dy[t]]!=2)
            {
                t++;
                t=t%4;
            }
            x=x+dx[t];
            y=y+dy[t];
            c[x][y]=a[k];
            k++;
        }
        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) printf("%d",c[i][j]);//输出 
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:53:56
      #include<bits/stdc++.h>
      using namespace std;
      int dx[4]={0,1,0,-1};
      int dy[4]={1,0,-1,0};
      int c[21][21],a[510],alen;
      char s[110];
      
      void change(int x)
      {
          int now=alen;
          while(x>0)
          {
              a[now--]=x%2;
              x/=2;
          }
      }//转2进制 
      int main()
      {
          int n,m;scanf("%d%d ",&n,&m);//避免输入错误多一个空格 
          cin.getline(s+1,100); 
          int len=strlen(s+1);
          memset(a,0,sizeof(a));
          alen=0;
          for(int i=1;i<=len;i++)
          {
              int x=(s[i]==' ') ?0:(s[i]-'A'+1);
              alen+=5;change(x);
          }//字母转数字再转2进制 
          memset(c,0,sizeof(c));
          for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) c[i][j]=2;//初始化 
          c[1][1]=a[1];
          int k=2,x=1,y=1,t=0;
          while(k<=n*m)
          {
              while(c[x+dx[t]][y+dy[t]]!=2)
              {
                  t++;
                  t=t%4;
              }
              x=x+dx[t];
              y=y+dy[t];
              c[x][y]=a[k];
              k++;
          }
          for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) printf("%d",c[i][j]);//输出 
          return 0;
      }
      • 1

      信息

      ID
      794
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      84
      已通过
      43
      上传者