n皇后问题
来源:互联网 发布:vc6.0可视化编程实例 编辑:程序博客网 时间:2024/05/17 06:13
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
1850
19210
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>using namespace std;int a[20];int book[20];int result[20];int ans;int n;void dfs(int step){ if(step==n) { ans++; return; } int i,k; for(k=0;k<n;k++)///列数所有的情况进行尝试 { if(book[k]==1) continue; book[k]=1; a[step]=k; for(i=0;i<step;i++)///行数和之前的行数和对应的列数,来判断当前填入的数和之前的数是否在一列或在45度对角线上 { if(/*a[i]==a[step]||*/a[i]-i==a[step]-step||a[i]+i==step+a[step]){ book[k]=0; break; } } if(i==step){ dfs(step+1);///如果和前面的数没有冲突,那么进行下一行进行填数 book[k]=0; } }}int main(){ for(n=1;n<=10;n++)///这部分就是打表,先把每个数字对应的n皇后共有多少种算出来,输出的时候就直接调用数组标。 { memset(a,0,sizeof(a)); memset(book,0,sizeof(book)); ans=0; dfs(0); result[n]=ans; } while(~scanf("%d",&n)&&n) { printf("%d\n",result[n]); }}
’
阅读全文
0 0
- N*N皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N 皇后问题
- N皇后问题
- N皇后问题算法
- N 皇后问题
- N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N皇后问题优化
- N皇后问题
- n皇后问题
- N皇后问题
- Kotlin -- 基本类型
- 差值 NYOJ1233 思路+代码
- 18118 勇者斗恶龙
- Android4.3 Bluetooth基本介绍
- Maven-Plugin开发实践
- n皇后问题
- H5 localStorage 轻量级存储
- The Linux USB Input Subsystem
- Android 新闻客户端案例
- win32学习08.键盘鼠标定时器消息
- PyCharm默认快捷键
- Android 4.2蓝牙介绍
- angular的$on $emit $boradcast的理解
- SVNKit开发手册