11 条题解

  • -1
    @ 2023-3-15 14:26:28
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n,i,j,s=1,k,a,t,h=0;
        cin>>n;
        int b[n][n];
        k=n-1;
        for(i=0;i<n;i++){
        	for(j=0;j<n;j++) b[i][j]=0;
    	}
        for(j=0;j<n;j++){
        	b[0][j]=s;
        	s++;
    	}
    	for(a=1;a<=n/2;a++){
    		for(t=0;t<k;t++){
    			if(b[a+t][n-a]!=0){
    				h=1;
    				break;
    			}else{
    				b[a+t][n-a]=s;
    				s++;
    			}	
    		}
    		for(t=1;t<=k;t++){
    			if(b[a+k-1][n-a-t]!=0){
    				h=1;
    				break;
    			}else{
    				b[a+k-1][n-a-t]=s;
    				s++;
    			}
    		}
    		k--;
    		for(t=1;t<=k;t++){
    			if(b[a+k-t][n-a-k-1]!=0){
    				h=1;
    				break;
    			}else{
    				b[a+k-t][n-a-k-1]=s;
    				s++;	
    			}
    			
    		}
    		for(t=1;t<=k;t++){
    			if(b[a][n-a-k-1+t]!=0){
    				h=1;
    				break;
    			}else{
    				b[a][n-a-k-1+t]=s;
    				s++;	
    			}
    		}
    		k--;
    		if(h==1) break;
    	}
    	for(i=0;i<n;i++){
    		for(j=0;j<n;j++) printf("%3d",b[i][j]);
    		cout<<endl;
    	}
    }
    

    信息

    ID
    208
    时间
    1000ms
    内存
    16MiB
    难度
    6
    标签
    递交数
    159
    已通过
    47
    上传者