N皇后

在n×n的国际象棋盘上,放置n个皇后,使任何一个皇后都不能吃掉另一个,需满足的条件是:同一行、同一列、同一对角线上只能有一个皇后。
求所有满足要求的方案数。
 
 
 
【样例输入】
4
【样例输出】
2
 
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int n,ans;
 6 bool judge[4][5005];
 7 
 8 void DFS(int line)
 9 {
10     if(line==n+1)
11     {
12         ans++;
13         return ;
14     }
15     for(int i=1;i<=n;i++)
16     {
17         if(!judge[1][i]&&!judge[2][i+line]&&!judge[3][n+10-i+line])
18         {
19             judge[1][i]=true,judge[2][i+line]=true,judge[3][n+10-i+line]=true;
20             DFS(line+1);
21             judge[1][i]=false,judge[2][i+line]=false,judge[3][n+10-i+line]=false;
22         }
23     }
24     return ;
25 }
26 
27 int main()
28 {
29     cin>>n;
30     DFS(1);
31     cout<<ans;
32     return 0;
33 }
练习深搜

 

posted @ 2017-03-24 21:41  Aptal丶  阅读(152)  评论(0编辑  收藏  举报