1 条题解

  • 3

    思路

    模拟题,hhll 表示上一个数的位置,看清点题别写错了。

    code

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int hf[100][100];
    int h,l;
    int main(){
    	cin>>n;
    	hf[1][(n+1)/2]=1;
    	h=1,l=(n+1)/2;
    	for(int i=2;i<=n*n;i++){
    		if(h==1&&l!=n)	hf[n][l+1]=i,h=n,l+=1;
    		else if(l==n&&h!=1)	hf[h-1][1]=i,h-=1,l=1;
    		else if(h==1&&l==n)	hf[h+1][l]=i,h+=1;
    		else if(h!=1&&l!=n){
    			if(hf[h-1][l+1]==0){
    				hf[h-1][l+1]=i;
    				h-=1,l+=1;
    			}else{
    				hf[h+1][l]=i;
    				h+=1;
    			}
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cout<<hf[i][j]<<" ";
    		}
    		cout<<'\n';
    	}
    }
    
    • 1

    信息

    ID
    478
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    6
    已通过
    3
    上传者