八皇后问题递归解发
来源:互联网 发布:蓝可儿事件知乎 编辑:程序博客网 时间:2024/06/06 19:45
#include <iostream>#include <string>using namespace std;int count=0;//记录总的放法int judge(int i,int j,int a[][8])//冲突检查{ int m,n; for(m=0;m<8;m++)//判断列是否有皇后 if(a[i][m]==1 && m!=j) return 0; for(m=0;m<8;m++)//判断行是否有皇后 if(a[m][j]==1 && m!=i) return 0; //判断两条对角线上是否有皇后 for(m=i-1,n=j-1;n>=0 && m>=0;m--,n--) //左上对角线冲突检查 if(a[m][n]==1) return 0; for(m=i-1,n=j+1;n<8 && m>=0;m--,n++) //右上对角线冲突检查 if(a[m][n]==1) return 0; for(m=i+1,n=j-1;m<8 && n>=0;m++,n--) //左下对角线冲突检查 if(a[m][n]==1) return 0; for(m=i+1,n=j+1;m<8 && n<8;m++,n++) //右下对角线冲突检查 if(a[m][n]==1) return 0; return 1;}void looc(int j,int a[][8]){ int i,k; if( j==8) { for(i=0;i<8;i++) { for(k=0;k<8;k++) printf("%d ",a[i][k]); printf("\n"); } count++; printf("\n\n"); return; } for(i=0;i<8;i++) { if(judge(i,j,a)) { a[i][j]=1;//符合要求、、、该位置置为1 looc(j+1,a);//对每一列放皇后、、 a[i][j]=0;//回溯 } }}void main(){ int a[8][8]; for(int i=0;i<8;i++)//二维数组初始化 for(int j=0;j<8;j++) a[i][j]=0; looc(0,a); printf("%d\n",count);}
0 0
- 八皇后问题递归解发
- 递归:: 八皇后问题
- 八皇后问题--递归
- 【递归】八皇后问题
- 八皇后问题.递归算法.
- 递归回溯--八皇后问题
- 八皇后递归求解问题
- 递归求解八皇后问题
- 八皇后问题 非递归
- 递归解决八皇后问题
- 八皇后问题(递归回溯)
- 八皇后问题(递归)
- 八皇后问题|递归|回溯
- 八皇后问题 递归求解
- 递归求解八皇后问题
- 经典递归问题--八皇后
- 八皇后问题--递归算法
- 八皇后问题--递归调用
- android gravity 详解
- C#中委托与事件
- GMF+Teneo
- POJ 2187 Beauty Contest 构造凸包 + 旋转卡壳
- ACM作业 找回手机
- 八皇后问题递归解发
- 日期时间类
- 游戏AI的综合设计
- 09应用输入管理器转动场景--《程序员学Unity3d》
- eclipse 插件subclipse 错误 This client is too old to work with working copy
- Windows多线程
- AutoEncoder的一些实验结果和思考
- linearLayout等布局添加动态背景(运用xml)注意加上clickable
- 利用联合体union编写测试系统大小端程序