回溯法解决8皇后问题
来源:互联网 发布:签名设计图软件 编辑:程序博客网 时间:2024/06/05 17:46
#include <iostream>#define N 8using namespace std;int position[N][N];void Initial_position(){for(int i = 0;i < N;i++){for(int j = 0;j < N;j++){position[i][j] = 0;}}}void print(){for(int i = 0;i < N;i++){for(int j = 0;j < N;j++){cout<<position[i][j]<<" ";}cout<<endl;}cout<<endl;}bool Judge(int x,int y){ for(int k = 0;k < N && k != y;k++) { if(position[x][k]) return false; } for(int k = 0;k < N && k != x;k++) { if(position[k][y]) return false; } int num,num1; num = x; num1 = y; while(num > 0 && num1 >0) { num--; num1--; if(position[num][num1]) return false; } num = x; num1 = y; while(num > 0 && num1 < N-1) { num--; num1++; if(position[num][num1]) return false; } num = x; num1 = y; while(num < N-1 && num1 > 0) { num++; num1--; if(position[num][num1]) return false; } num = x; num1 = y; while(num < N-1 && num1 < N-1) { num++; num1++; if(position[num][num1]) return false; } return true;}int number = 0;void BT(int num1,int num2,int temp[N][N]){if(num1 == N){print();number++;}else{for(int i = 0;i < N;i++){if(Judge(num1,i)){temp[num1][i] = 1;//print();BT(num1+1,0,temp);temp[num1][i] = 0;}}}}int main(){Initial_position();print();BT(0,0,position);cout<<"共有"<<number<<"种解法!"<<endl;system("pause");return 0;}
阅读全文
0 0
- 回溯法 解决 8皇后问题
- 回溯法解决8皇后问题
- 回溯法解决2n皇后(8皇后)问题
- 回溯法解决N皇后问题
- 回溯法解决“八皇后”问题
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- 回溯法解决八皇后问题
- 回溯法解决n皇后问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- scala 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 回溯法解决n皇后问题
- 学习less记录
- http请求
- c 语言 进制转换 短小精悍
- 欢迎使用CSDN-markdown编辑器
- APP界面设计之页面布局的22条基本原则
- 回溯法解决8皇后问题
- python--leetcode104. Maximum Depth of Binary Tree
- 微信开发访问两次服务器
- 使用RUBY遍历目录下的所有文件
- 51nod 1768 Rikka with Sequences KDtree维护历史最大值
- python 短路法提高二叉堆插入效率
- springboot2入门(4-starter-hateoas)
- OpenCV外接USB摄像头
- java知识体系