AcWing 3472. 八皇后
原题链接
中等
作者:
Cecily0618
,
2025-03-24 23:45:47
·重庆
,
所有人可见
,
阅读 2
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 8;
vector<string> so;
int a[N],col[N], d1[2 * N], d2[2 * N];
void dfs(int x) {
if (x > N) {
string s;
for (int i = 1; i <= N; ++i) s += to_string(a[i]);
so.push_back(s);
return;
}
for (int i = 1; i <= N; ++i) {
if (col[i] || d1[x - i + N] || d2[x + i]) continue;
a[x] = i;
col[i] = d1[x - i + N] = d2[x + i] = 1;
dfs(x + 1);
col[i] = d1[x - i + N] = d2[x + i] = 0;
}
}
int main() {
int t, b;
cin >> t;
dfs(1);
sort(so.begin(), so.end());
while (t--) {
cin >> b;
cout << so[b - 1] << endl;
}
return 0;
}