八皇后问题解析
2011-05-30 11:51
183 查看
#include <iostream> using namespace std; //已确定每一行都有一个皇后 //重复的执行: 在x行中逐个查找---符合的就先放置并在关联位置染上色---进行下一行的查找 //---完毕后撤销原来在x行设置的关联染色并继续在该行中查找下一个符合的位置 //结束条件:当深度查找执行到的行数>8行时就返回 bool bMemoryArray[3][30] = {false}; int nResultNum = 0; //在本行中执行放置皇后 void dfs(int row) { //行数大于8行,说明皇后已经摆放完毕 if (row == 9) { //结果数加1 nResultNum++; return; } //在该行中进行行遍历 for (int col=1;col<=8;col++) { //1代表列是否被染色,2代表主对角线是否被染色,3代表副对角线是否被染色 if (!bMemoryArray[0][col] && !bMemoryArray[1][col-row+8] && !bMemoryArray[2][col+row]) { //如果都没染色则设置染色 bMemoryArray[0][col] = bMemoryArray[1][col-row+8] = bMemoryArray[2][col+row] = true; //继续下一行的放置皇后 dfs(row+1); //执行完毕后进行撤销原先在本行的相关染色 bMemoryArray[0][col] = bMemoryArray[1][col-row+8] = bMemoryArray[2][col+row] = false; //继续本行的一个符合位置的搜索 } } } int main() { //从第一行开始放置皇后 dfs(1); cout << "Eight Quees number of results: "<< nResultNum ; return 0; }
相关文章推荐
- 八皇后问题解析.关键问题提示
- Java常用算法——搜索(dfs) & 回溯(全排列、八皇后、分苹果问题的详细解析)
- 八皇后问题经典解析
- 回溯算法之八皇后问题深度解析
- 八皇后问题
- header头信息解析以及CORS 跨域 access-control-allow-headers 的问题
- 问题九:C++中::是干嘛用的(域解析操作符)
- C语言解决常胜将军问题代码解析
- c++ 深度优先算法解决八皇后问题
- 八皇后问题
- 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)
- SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题
- 一个AjAx的基础知识问题的解析
- Fragment缓存问题的解析
- TinyXml源码解析之解决XML中&符号过滤的问题
- 关于Gson解析关键字处理问题
- hanoi塔问题解析(二)
- 解决win7浏览器不能解析域名的问题
- 八皇后问题最简单的解法
- pl_sql 报ora-12154 无法解析指定的连接标识符的问题