1 条题解
-
0
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 110, INF = 0x3f3f3f3f, MOD = 1E9 + 7; int n, m, a[N], cnt; bool b[N], c[N], d[N]; // a[x]=y 在(x,y)放置皇后 // b[y] 表示第 y 列是否放置 // c[x+y], d[x-y+n] 表示对角线1,2是否放置 string ans[N]; void dfs(int x) { if (x > n) { ++cnt; for (int i = 1; i <= n; i++) ans[cnt] += a[i] + '0'; return; } for (int y = 1; y <= n; y++) { if (!b[y] && !c[x + y] && !d[x - y + n]) { a[x] = y, b[y] = c[x + y] = d[x - y + n] = 1, dfs(x + 1); b[y] = c[x + y] = d[x - y + n] = 0; } } } int main(int argc, char* argv[]) { int T, x; n = 8, dfs(1); cin >> T; while (T--) { cin >> x; cout << ans[x] << endl; } return 0; }
- 1
信息
- ID
- 525
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 1
- 标签
- 递交数
- 105
- 已通过
- 85
- 上传者