奇怪的问题,求大佬解答
查看原帖
奇怪的问题,求大佬解答
607157
lzlzl楼主2023/8/4 23:03
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,ans[15],cnt;
int a[15][15];
void eight(int step)
{
	if(step>n)
	{
		cnt++;
		if(cnt<=3)
		{
			for(int i=1;i<=n;i++)
				printf("%d ",ans[i]);
			printf("\n");
		}
		return;
	}
	for(int j=1;j<=n;j++)
	{
		if(a[step][j]>0) continue;
		else 
		{
			ans[step]=j;
			
			for(int i=step+1;i<=n;i++)
				a[i][j]++;
			
			int i1=step+1,j1=j-1;
			while(i1>0&&j1>0)
				a[i1++][j1--]++;
			
			int i2=step+1,j2=j+1;
			while(i2<=n&&j2<=n)
				a[i2++][j2++]++;
			
			/*for(int i3=1;i3<=n;i3++)
			{
				for(int j3=1;j3<=n;j3++)
					cout<<a[i3][j3]<<" ";
				cout<<endl;
			}
			cout<<endl;*/
			eight(step+1);
			
			for(int i=step+1;i<=n;i++)
				a[i][j]--;
			
			i1=step+1,j1=j-1;
			while(i1>0&&j1>0)
				a[i1][j1]--;
			
			i2=step+1,j2=j+1;
			while(i2<=n&&j2<=n)
				a[i2][j2]--;
		}
	}
	return;
}
int main()
{
	cin>>n;
	for(int i3=1;i3<=n;i3++)
			{
				for(int j3=1;j3<=n;j3++)
					cout<<a[i3][j3]<<" ";
				cout<<endl;
			}
			cout<<endl;
	eight(1);
	for(int i3=1;i3<=n;i3++)
			{
				for(int j3=1;j3<=n;j3++)
					cout<<a[i3][j3]<<" ";
				cout<<endl;
			}
			cout<<endl;
	cout<<cnt;
	return 0;
}

以上是我的代码,有点冗长 先不考虑它的时间复杂度,但是它根本跑不起来,是为什么啊,一直都是死循环的状态 本蒟蒻希望把这个问题解决之后再改进

2023/8/4 23:03
加载中...