2 solutions

  • 4
    @ 2024-7-23 16:09:53
    #include<bits/stdc++.h>
    using namespace std;
    int dx[]={0,1,0,-1};
    int dy[]={1,0,-1,0};
    int g[100][100];
    int main()
    {
        int n;
        cin>>n;
        int x=1,y=1,d=0;
        for(int i=1;i<=n*n;i++)
        {
            g[x][y]=i;
            int a=x+dx[d],b=y+dy[d];
            if(a<1 || a>n || b<1 || b>n || g[a][b]!=0)
            {
                d++;
                if(d==4) d=0;
                a=x+dx[d],b=y+dy[d];
            }
            x=a,y=b;
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cout<<setw(3)<<g[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    
    • 0
      @ 2024-12-4 19:44:50
      #include <bits/stdc++.h>
      using namespace std;
      int N[22][22];
      //右下左上
      int dx[] = {0,1,0,-1};
      int dy[] = {1,0,-1,0};
      int main(){
          int n;
          cin >> n;
          int x = 1;
          int y = 1;
          int d = 0;
          for(int i = 1;i<=n*n;i++){
              N[x][y] = i;
              x = x + dx[d];
              y = y + dy[d];
              //如果越界
              if(x < 1 || x > n ||y <1||y>n || N[x][y] != 0){
                  x =x - dx[d];
                  y =y - dy[d];
                  d++;
                  if(d == 4)d=0;
                  x =x + dx[d];
                  y =y + dy[d];
              }
          }
          for(int i = 1;i<=n;i++){
              for(int j = 1;j<=n;j++){
                  cout<<setw(3)<< N[x][y]<< " ";
              }
              cout << endl;
          }
      
      
      
      
      
      
      
          return 0;
      }
      
      • 1

      Information

      ID
      78
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      3
      Tags
      (None)
      # Submissions
      83
      Accepted
      31
      Uploaded By