八皇后
作者:
原神高手
,
2022-11-24 12:51:18
,
所有人可见
,
阅读 181
#include<bits/stdc++.h>
using namespace std;
const int N = 92, M = 20;
int n;
int b, path[8];
int a[N][8];
int idx = 0;
bool st[M], dg[M], udg[M];
void dfs(int u)
{
if(u == 8)
{
for(int i = 0; i < 8; i++)
{
a[idx][i] = path[i]; //记录全部摆放方法
}
idx++;
}
for(int i = 1; i <= 8; i++)
if(!st[i] && !dg[i + u] && !udg[i - u + 8])
{
path[u] = i;
st[i] = dg[i + u] = udg[i - u + 8] = true;
dfs(u + 1);
st[i] = dg[i + u] = udg[i - u + 8] = false;
}
}
int main()
{
dfs(0);
scanf("%d", &n);
while(n--)
{
scanf("%d", &b);
for(int i = 0; i < 8; i++)
{
cout << a[b - 1][i]; //取出第b个串
}
cout << endl;
}
return 0;
}