zoukankan      html  css  js  c++  java
  • 桐桐的数学游戏

      题目描述  

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

      输入  

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

      输出  

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

      样例输入  

    8
    

      样例输出  

    92
     1 #include<bits/stdc++.h>
     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<n;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<<cnt<<endl;
    29     return 0;
    30 }
    View Code
     
    如有错误,请指正,感谢!
  • 相关阅读:
    C#程序调用cmd.exe执行命令
    JS正则表达式之特殊符号
    Java设计模式之策略模式
    Java基础之多态
    Filter过滤器笔记1
    Servlet笔记1
    jsp笔记3(内置对象)
    jsp笔记2(编译指令与动作指令)
    jsp笔记1(基本原理与语法)
    xml文件生成与下载
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9381074.html
Copyright © 2011-2022 走看看