@[Wendy_Hello](/user/1039211)
```cpp
#include<bits/stdc++.h>
#define N 100
using namespace std;
int a[N][N],b[N];
int vis[N][N];
int tot;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void dfs(int step)
{
if(step==8+1)
{
tot++;
for(int i=1;i<=8;i++)
a[tot][i]=b[i];
return;
}
for(int i=1;i<=8;i++)
{
if(vis[0][i]==0&&vis[1][step+i]==0&&vis[2][step-i+8]==0)
{
vis[0][i]=1;
vis[1][i+step]=1;
vis[2][step-i+8]=1;
b[step]=i;
dfs(step+1);
vis[0][i]=0;
vis[1][i+step]=0;
vis[2][step-i+8]=0;
}
}
}
int main()
{
int n;
cin>>n;
dfs(1);
while(n--)
{
int i;
cin>>i;
for(int j=1;j<=8;j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}
```
by Dream_Creator @ 2024-04-16 20:31:03
@[Dream_Creator](/user/529722)
**主要就是判断第几个皇后串时不是很会,不知大佬能否传我一技呢**
by Wendy_Hello @ 2024-04-16 20:33:17
```cpp
#include <bits/stdc++.h>
using namespace std;
int n, t = 1, ans, a[10], A,mp[100][10];
bool b[10], c[10], d[10];
void dfs (int x)
{
if (x > 8)
{
ans++;
for(int i=1;i<=8;i++) mp[ans][i]=a[i];
return;
}
else
{
for (int i = 1; i <= 8; i++)
{
if (b[i] == 0 && c[x - i + 7] == 0 && d[x + i] == 0)
{
a[x] = i;
b[i] = 1;
c[x - i + 7] = 1;
d[x + i] = 1;
dfs (x + 1);
b[i] = 0;
c[x - i + 7] = 0;
d[x + i] = 0;
}
}
}
}
int main()
{
dfs(1);
scanf ("%d", &n);
while(n--)
{
scanf("%d" ,&A);
for(int i=1;i<=8;i++)
{
printf("%d",mp[A][i]);
}
puts("");
}
return 0;
}
```
@[Wendy_Hello](/user/1039211)
by z_z_b_ @ 2024-04-16 20:34:24
题目并没有保证cin[i]<=cin[i+1],所以会漏解
(哎呀,好像晚了awa)
by z_z_b_ @ 2024-04-16 20:35:21
@[z_z_b_](/user/956129)
**非常感谢(捂脸:没事)**
by Wendy_Hello @ 2024-04-16 20:36:51
@[z_z_b_](/user/956129)
**用了大佬的代码,发现从83开始输出的就是00000000了,该怎么改一下?**
by Wendy_Hello @ 2024-04-16 20:55:02
?你的问题吧,我直接复制是有解的
@[Wendy_Hello](/user/1039211)
by z_z_b_ @ 2024-04-16 20:57:29
@[z_z_b_](/user/956129)
**好,我瞅瞅**
by Wendy_Hello @ 2024-04-16 21:01:56