C++ 八皇后 递归算法实现
来源:互联网 发布:小米windows平板3 编辑:程序博客网 时间:2024/06/06 03:42
八皇后问题感觉是递归算法中比较简单的一种,核心思想就是放置之前检查行列四个斜方位即可,共92种方案,还是挺有趣的,和汉诺塔一样,应该属于递归比较经典的问题
#include<iostream>using namespace std;int g_count=0;bool CanPlace(int row,int col,int (*chess)[8]){for(int i=0;i<8;i++){if(chess[i][col]==1){//check colreturn false;}if(chess[row][i]==1){//check rowreturn false;}}for(int i=0;i<8;i++){//check left-frontif(row-i<0||col-i<0){break;}if(chess[row-i][col-i]==1){return false;}}for(int i=0;i<8;i++){//check right-frontif(row-i<0||col+i>7){break;}if(chess[row-i][col+i]==1){return false;}}for(int i=0;i<8;i++){//check left-belowif(row+i>7||col-i<0){break;}if(chess[row+i][col-i]==1){return false;}}for(int i=0;i<8;i++){//check right-belowif(row+i>7||col+i>7){break;}if(chess[row+i][col+i]==1){return false;}}return true;}void EightQueen(int row,int col,int (*chess)[8]){//temp 2Darrayint chess2[8][8];//put last scene to temp 2Darrayfor(int i=0;i<8;i++){for(int j=0;j<8;j++){chess2[i][j]=chess[i][j];}}if(row==8){//show resultfor(int i=0;i<8;i++){for(int j=0;j<8;j++){cout<<chess2[i][j]<<' ';}cout<<endl; }cout<<endl;g_count++;}else{for(int j=0;j<8;j++){if(CanPlace(row,j,chess2)){chess2[row][j]=1;//put chessEightQueen(row+1,j,chess2);//move to next rowchess2[row][j]=0;//remove chess to use for next by same chess 2Darray}} }};int main(){int chess[8][8]={0};EightQueen(0,0,chess);cout<<g_count<<endl;return 0;}
1 0
- 八皇后问题递归回溯算法实现
- C++ 八皇后 递归算法实现
- 八皇后 C语言递归实现
- 八皇后问题递归实现(C++)
- 八皇后-递归算法
- 八皇后递归实现
- 八皇后问题.递归算法.
- 八皇后问题--递归算法
- C脚本递归算法-计算八皇后问题
- 八皇后问题的非递归算法实现
- 八皇后 回溯递归实现
- 八皇后(递归实现)
- 八皇后问题递归实现
- 八皇后 c语言递归实现方法(带注释)
- 八皇后问题的递归算法和非递归算法实现
- C 数据算法 八皇后
- C#WPF实现回溯算法解决八皇后问题
- 八皇后 Java算法实现
- Java中的mvc和三层结构究竟是什么关系
- Hibernate入门------HelloWord
- spring 方法注入 lookup方法注入
- JSP、Servlet中的路径问题
- poj 3661 (dp)
- C++ 八皇后 递归算法实现
- STM32启动模式及API
- 气质另类人嚣张, 道家建迎横过江
- BZOJ 4552: [Tjoi2016&Heoi2016]排序
- sql学习记录【2】
- android 当设置Activity状态栏为透明时,键盘弹出ScrollView滚动无效解决方案
- Java Web开发环境搭建之windows
- stm32启动代码分析
- JNI之——Can't load IA 32-bit .dll on a AMD 64-bit platform错误的解决