桐桐的数学游戏

  题目描述  
相信大家都听过经典的“八皇后”问题吧?这个游戏要求在_个8×8的棋盘上放置8个皇后,使8个皇后互相不攻击(攻击的含义是有两个皇后在同一行或同一列或同一对角线上)。
桐桐对这个游戏很感兴趣,也很快解决了这个问题。可是,她想为自己增加一点难度,于是她想求出n皇后的解的情况。你能帮助她吗?

  输入  

一个数n(1≤n≤13),表示为n皇后问题。

 

  输出  
一个数,表示n皇后问题的解法总数。

 

  样例输入  
8

 

  样例输出  
92
 1 #include
 2 using namespace std;
 3 int c[20],cnt,n,a[100],b[100];
 4 void dfs(int i)
 5 {
 6    if(i==n)
 7    {
 8         cnt++;
 9         return ;
10    }
11    for(int j=0;j){
12         if(!c[j]&&!a[i+j]&&!b[i-j+n-1])
13         {
14             c[j]=1;
15             a[i+j]=1;
16             b[i-j+n-1]=1;
17             dfs(i+1);
18             c[j]=0;
19             a[i+j]=0;
20             b[i-j+n-1]=0;
21         }
22    }
23 }
24 int main()
25 {
26     cin>>n;
27     dfs(0);
28     cout<endl;
29     return 0;
30 }
View Code

 

 

转载于:https://www.cnblogs.com/scott527407973/p/9381074.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部