AcWing 1432. 棋盘挑战
原题链接
中等
作者:
偷月亮的喵
,
2024-12-30 15:39:54
,
所有人可见
,
阅读 2
#include <iostream>
#include <cstdio>
using namespace std;
int x[16];
int b[4][100];
int sum, n;
//a表示皇后个数,也表示行数
void DFS(int a) {
if(a > n) {
sum++;
if(sum <= 3) {
for(int i = 1; i <= n; ++i) {
cout << x[i] << ' ';
}
cout << '\n';
}
return;
}
for (int i = 1; i <= n; i++){
if (!b[0][i] && !b[2][i+a] && !b[1][i - a + n]){
b[0][i] = b[1][i - a + n] = b[2][i+a] = true;
x[a] = i;
DFS(a + 1);
b[0][i] = b[1][i - a + n] = b[2][i+a] = false;
}
}
}
int main()
{
cin >> n;
DFS(1);
cout << sum << '\n';
return 0;
}