求助,手动模拟程序流程没问题但结果出错
查看原帖
求助,手动模拟程序流程没问题但结果出错
797855
DrinkQ楼主2023/10/2 17:00
#include<bits/stdc++.h>
using namespace std;
int a[40][40];
int main()
{
	int n,x,y;
	cin>>n;
	int k=floor(n/2)+1;
	a[1][k]=1;
	x=1,y=k;
	for(int i=2;i<=n*n;i++){
		//cout<<x<<" "<<y<<endl;
		if(x==1 && y!=n) a[n][y+1]=i,x=n,y+=1;
		if(y==n && x!=1) a[x-1][1]=i,x-=1,y=1;
		if(x==1 && y==n) a[x+1][y]=i,x+=1;
		if(x!=1 && y!=n) {
			if(a[x-1][y+1]==0) a[x-1][y+1]=i,x-=1,y+=1;
			else a[x+1][y]=i,x+=1;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++) cout<<a[i][j]<<" ";
		cout<<endl;}
	return 0;
}

问题:在输入3时,幻方中总是出现多个2,但按照程序一个数最多被加入数组一次

2023/10/2 17:00
加载中...