一、题目链接
P1219 [USACO1.5]八皇后 Checker Challenge
类似题目:AcWing 843. n-皇后问题【DFS】【剪枝】
二、题目分析
(一)算法标签
DFS
(二)解题思路
详细了解搜索类题目(DFS、BFS),请移步DFS BFS 搜索题目归纳
三、AC代码
解法一:
#include <iostream>
using namespace std;
const int N = 15;
int n;
int ans;
bool col[N], dg[2 * N - 1], udg[2 * N - 1];
int path[N];
void dfs(int u)
{
if (u == n)
{
ans ++ ;
if (ans <= 3)
{
for (int i = 0; i < n; i ++ ) printf("%d ", path[i]);
puts("");
}
}
for (int i = 0; i < n; i ++ )
{
if (!col[i] && !dg[u + i] && !udg[u - i + n])
{
col[i] = dg[u + i] = udg[u - i + n] = true;
path[u] = i + 1;
dfs(u + 1);
path[u] = 0;
col[i] = dg[u + i] = udg[u - i + n] = false;
}
}
}
int main()
{
cin >> n;
dfs(0);
cout << ans << endl;
return 0;
}