八皇后问题
来源:互联网 发布:mac能玩csgo吗 编辑:程序博客网 时间:2024/06/08 19:31
问题描述会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将 8 个皇后放在棋盘上(有 8 * 8 个方格) ,使它们谁也不能被吃掉!这就是著名的八皇后问题。
</pre><pre name="code" class="cpp">#include <stdio.h>int A[8][8]; //棋盘 int k;int isOK(int a, int b) { //A[a][b]可否放置棋子 int x,y,i;for(i=0;i<8;i++)if(A[a][i]==1||A[i][b]==1) //横纵向检查 return 0;for(x=a-1,y=b-1;x>=0&&y>=0;x--,y--) //左上 if(A[x][y]==1)return 0;for(x=a+1,y=b-1;x<8&&y>=0;x++,y--) //左下 if(A[x][y]==1)return 0;for(x=a-1,y=b+1;x>=0&&y<8;x--,y++) //右上 if(A[x][y]==1)return 0;for(x=a+1,y=b+1;x<8&&y<8;x++,y++) //右下 if(A[x][y]==1)return 0;return 1;}void f(int n) { //八皇后递归,n表示第几行 int i,j;if(n>=8) { //棋子放满,开始打印 for(i=0;i<8;i++) {for(j=0;j<8;j++)printf("%d",A[i][j]);printf("\n");}printf("\n");k++; //统计次数 return;} for(i=0;i<8;i++){if(isOK(n,i)) {A[n][i]=1; //放棋 f(n+1);A[n][i]=0; //撤棋}}}int main() {f(0);printf("Toltal numbers:%d\n",k);return 0;}
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 如何制件自由选区(笔记) wpf
- HDU1106 排序
- 2015071904 - 要有意识地磨练自己的意志
- shell脚本-批量添加或删除用户
- String to Integer (atoi)
- 八皇后问题
- 2015071905 - 你付出了什么?
- Palindrome Number
- Tomcat虚拟目录的配置
- 设计模式--职责链模式
- java常用类源代码探究(二):装箱类
- HDU1201 18岁生日
- 源代码控制管理工具_git&svn
- Linux下网络排查之ping|traceroute|mtr工具