幻方题解
2023-03-05 20:50:07
发布于:浙江
61阅读
0回复
0点赞
#include <iostream>
using namespace std;
int li[41][41],n;
void huanfang(int step,int y,int x){
if(step>n*n+1){
return;
}
li[y][x]=step-1;
if(step==1){
huanfang(2,1,n/2+1);
}
else{
if(y==1 && x!=n){
huanfang(step+1,n,x+1);
}
else if(x==n && y!=1){
huanfang(step+1,y-1,1);
}
else if(x==n && y==1){
huanfang(step+1,y+1,n);
}
else{
if(li[y-1][x+1]==0)huanfang(step+1,y-1,x+1);
else huanfang(step+1,y+1,x);
}
}
}
int main() {
cin>>n;
huanfang(1,1,n/2+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d",li[i][j]);
if(j!=n) printf(" ");
}
if(i!=n)
printf("\n");
}
return 0;
}
这里空空如也
有帮助,赞一个