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 }
练习深搜

 

转载于:https://www.cnblogs.com/Shy-key/p/6613572.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值