八皇后问题
来源:互联网 发布:数据帧格式的解释 编辑:程序博客网 时间:2024/06/13 10:11
老问题,用到回溯法。对于每一个皇后,在每行每列都可以放,她事先不知道会不会和其他皇后产生冲突,如果有冲突的话,则换个地方,直到放的地方不和其她皇后产生冲突。
代码如下:
#include <iostream>#include <cmath>using namespace std;const int MAX = 8;int count;//统计有多少解class Queen{private:int Q[MAX];public:void PutQ(int i)//放置第i行皇后{for (int j = 0; j < MAX; j++){if (i == MAX)//如果全部放完,则输出结果{count++;cout<<"第"<<count<<"组解."<<endl;Print();return;}Q[i] = j;//放置皇后if (Judge(i))//判断是否与之前放置的皇后有冲突{PutQ(i + 1);}}}void Print(){for (int i = 0; i < MAX; i++){for (int j = 0; j < MAX; j++){if (j == Q[i]){cout<<"Q ";}else{cout<<"O ";}}cout<<endl;}cout<<endl;}int Judge(int i){for (int j = 0; j < i; j++){if (Q[i] == Q[j] || fabs(Q[i] - Q[j]) == i - j)//如果行列或对角有冲突的话则结束{return 0;}}return 1;//没有冲突}};int main(){Queen queen;queen.PutQ(0);//从第一行开始放置return 0;}
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- linux-2.6.32在mini2440开发板上移植(7)之修改linux开机logo
- mysql创建库语句
- 将Ant脚本中的Target单独写在其它xml中
- ZFS 源代码介绍
- verilog中的阻塞和非阻塞
- 八皇后问题
- 解决vim中文乱码问题
- 贪心算法---活动选择问题
- HBase Configuration过程
- Python 中的 os.path 模块说明
- 小根堆 排序 学习
- 语义网原理笔记
- iOS静态库相关
- WTL,ATL,STL学习