问题标题: 手搓自动生成幻方

0
0
汪润泽
汪润泽
修练者
修练者
include<bits/stdc++.h>
using namespace std;
int a[45][45];
int n;
bool qaz(){
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]==0){
                return 1;
            }
        }
    }
    return 0;
}
void u(int i,int &c,int &v){
    if(c-1<=0){
        if(v+1>n){
            c=c+1;
            a[c][v]=i;
        }else{
            c=n;
            v++;
            a[c][v]=i;
        }
    }else{
        if(v+1>n){
            c--;
            v=1;
            a[c][v]=i;
        }else{
            if(a[c-1][v+1]!=0){
                c++;
                a[c][v]=i;
            }else{
                c--;
                v++;
                a[c][v]=i;
            }
        }
    }
}
int main(){
    cout<<"最大27\n";
    cin>>n;
    int x=(n+1)/2;
    a[1][x]=1;
    int p=2;
    int c=1,v=x;
    while(qaz()){
        u(p,c,v);
        p++;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cout<<setw(4)<<a[i][j]<<" ";
        }
        cout<<endl<<endl;
    }
    return 0;
}

北京烤鸭帝国团队所有

汪润泽在2026-06-28 09:34:32追加了内容

加入北京烤鸭帝国后,点我领更多游戏


0
0
0
我要回答