幻方题解
2023-03-05 20:50:07
发布于:浙江
80阅读
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;
}
这里空空如也

有帮助,赞一个