lzlzl @ 2023-08-04 23:03:36
#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;
}
以上是我的代码,有点冗长 先不考虑它的时间复杂度,但是它根本跑不起来,是为什么啊,一直都是死循环的状态 本蒟蒻希望把这个问题解决之后再改进
by Anoif @ 2023-08-09 09:15:43
我暂时没咋看懂,但是我有个排查代码的方法:在你认为有问题的地方进行一个排查输出,或许能明白内部运作如何
如果没帮上忙可以把我当空气……