@[jmsyang0808](/user/1202695) 你在主函数里又定义了一次$n$,使得 $n$ 的全局变量值为1
删去主函数里的
```
int n
```
by call_of_silence @ 2024-02-05 16:31:05
@[call_of_silence](/user/1168861) 谢谢
但是WA啊(顺序不对)
by jmsyang0808 @ 2024-02-05 16:58:27
@[jmsyang0808](/user/1202695) 你存方案和判一列出现皇后没有需要两个数组
```
#include<iostream>
#include<algorithm>
using namespace std;
const int N=51;
int n,cnt=0;
int u[N],l[N];
bool p[N],q[N];
void dfs(int s)
{
if(s>n)
{
if(cnt<3)
{
for(int i=1;i<=n;i++)
cout << u[i] <<' ';
cout <<endl;
}
cnt++;
return ;
}
for(int i=1;i<=n;i++)
{
if((!l[i])&&(!p[i+s])&&(!q[s-i+n]))
{
l[i]=1;p[i+s]=q[s-i+n]=1;
u[s]=i;
dfs(s+1);
l[i]=0;p[i+s]=q[s-i+n]=0;
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
dfs(1);cout<<cnt;
return 0;
}
```
by call_of_silence @ 2024-02-05 17:04:54
@[jmsyang0808](/user/1202695) 还有判对角线的时候,右上至左下应该是 $i-s+n$ 吧
by call_of_silence @ 2024-02-05 17:06:13
万分感谢 @[call_of_silence](/user/1168861)
会关 此贴结
by jmsyang0808 @ 2024-02-05 19:46:37