1 条题解

  • 1
    @ 2023-2-2 17:13:59

    明明一开始想直接循环算出每一个位置要放什么数来装逼,结果: image 只好用最简单的放法做,

    AC代码走起:

    #include<bits/stdc++.h>
    using namespace std;
    int n,x=1,y=1,st=1,t;
    int a[110][110];
    int dx[4]={0,1,0,-1},
        dy[4]={1,0,-1,0}; 
    int main(){
    	cin>>n;
    	for(int i=1;i<=110;i++){
    		for(int j=1;j<=110;j++){
    			a[i][j]=-1;
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			a[i][j]=0;
    		}
    	}
    	a[1][1]=1;	
    	while(st<n*n){
    		if(a[x+dx[t]][y+dy[t]]!=0){
    			t=(t+1)%4;
    		}
    		x+=dx[t];
    		y+=dy[t];
    		a[x][y]=++st;
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cout<<setw(4)<<a[i][j];
    		}
    		cout<<"\n";
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    1549
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    94
    已通过
    18
    上传者