问题标题: 酷丁编程:手搓自动生成幻方

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;
}

北京烤鸭帝团队所有


0
0
0
0
0
汪思源
汪思源
新手光能
新手光能

板块,这应该放代码分享

0
高驰宇
高驰宇
新手天翼
新手天翼

我也写了一个,是经开区真题的那个,100分AC,我也给他放进去把

0
我要回答