是我对题目的误解,还是题目对我的误解
查看原帖
是我对题目的误解,还是题目对我的误解
1367333
are_you_sure楼主2024/6/20 22:18

代码

#include <iostream>
using namespace std;

int main(){
    int n,y/*列*/,x/*行*/,m=1;
    cin>>n;
    int a[n][n];
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++) {
            a[i][j]=0;
        }
    }
    a[0][n/2]=m;
    x=0;
    y=1;
    m=1;
    for(int i=0;i<n*n;i++){
        
            if(x==0){
                x=n-1;
            }
            else x-=1;
            if(y==n-1){
                y=0;
            }
            else y+=1;
            if(a[x][y]==0){
                m++;
                a[x][y]=m;
            }
            else{
                if(x==n-1){
                    x=0;
                }
                else x+=1;
                m++;
                a[x][y]=m;
            }
            if(m>=n*n){
                break;
            }
            
        
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}

样例填数结果:

9 1 5

3 4 8

6 7 2

总结:

1~3填数正确,从4开始,整个方阵直接乱掉

2024/6/20 22:18
加载中...