3 solutions

  • 1
    @ 2024-10-29 17:58:05
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n,s[10][10],sum=0,j=0;
    	int a[10][10] = {0};
    	int dx[] = {0,1,0,-1};
    	int dy[] = {1,0,-1,0};
    	int dir = 0;
    	int x = 0, y = -1;
    	cin >> n;
    	for(int i=1;i<=n*n;i++){
    		int nx = x + dx[dir];
    		int ny = y + dy[dir];
    		if (nx >= n || ny >= n || nx < 0 || ny < 0 || a[nx][ny] != 0) {
    			dir = (dir + 1) % 4;
    			nx = x + dx[dir];
    			ny = y + dy[dir];
    		}
    		
    		
    		a[nx][ny] = i;
    		x = nx, y = ny;
    	}
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			cout << setw(3) << a[i][j];
    		}
    		cout << '\n';
    	} 
    }
    
    • 0
      @ 2026-6-3 17:25:35

      抄题请先点击

      #include<bits/stdc++.h>
      using namespace std;
      const int MAX = 10;
      int a[MAX][MAX];  
      int main(){
          int n;
          cin>>n;
          int u=1;         
          int t=0;         
          int b=n-1;  
          int l=0;        
          int r=n-1;  
          while(u<=n*n){
              for(int i=l;i<=r&&u<=n*n;i++){
                  a[t][i]=u++;
              }
              t++; 
              for (int i=t;i<=b&&u<=n*n;i++){
                  a[i][r]=u++;
              }
              r--; 
              for(int i=r;i>=l&&u<=n*n;i--){
                  a[b][i]=u++;
              }
              b--; 
              for(int i=b;i>=t&&u<=n*n;i--){
                  a[i][l]=u++;
              }
              l++; 
          }
          for(int i=0;i<n;i++){
              for(int j=0;j<n;j++) {
                  cout<<setw(3)<<a[i][j];
              }
              cout<<endl;
          }
      
          return 0;
      }
      
      • 0
        @ 2024-11-17 20:38:28

        代码:

        #include<bits/stdc++.h>
        typedef long long ll;
        using namespace std;
        const int N=10010;
        int a[N][N];
        int k=1,x=1;
        int n;
        int y;
        int main(){
        	
        	cin.sync_with_stdio(false);
        	ios::sync_with_stdio(0);
        	cin>>n;
        	while(k<=n*n){
        		while(y<n&&!a[x][y+1]) a[x][++y]=k++;
        		while(x<n&&!a[x+1][y]) a[++x][y]=k++;
        		while(y>1&&!a[x][y-1]) a[x][--y]=k++;
        		while(x>1&&!a[x-1][y]) a[--x][y]=k++;
        	}
        	for(int i=1;i<=n;i++){
        		for(int j=1;j<=n;j++)
        			printf("%3d",a[i][j]);
        		cout<<'\n';	
        	}
        		
        	return 0;
        }
        
        • 1

        Information

        ID
        416
        Time
        1000ms
        Memory
        256MiB
        Difficulty
        4
        Tags
        (None)
        # Submissions
        123
        Accepted
        56
        Uploaded By