8皇后问题(回溯法)
2018-03-24 00:18
148 查看
//8皇后(回溯法)
#include <iostream>
using namespace std;
void queen_all(int k);//回溯的算法函数
int col[9];
bool row[9], digLeft[17], digRight[17];
int main()
{
int j;
for (j = 0; j <= 8; j++) row[j] = true;
for (j = 0; j <= 16; j++) digLeft[j] = digRight[j] = true;
queen_all(1);
return 0;
}
//8*8棋盘的第K列上找合理的配置
void queen_all(int k)
{
int i, j;
char awn; //存储是否继续寻找的标志
for (i = 1; i <= 8;i++) //依次在1至8行上配置K列的皇后
if (row[i] && digLeft[k+i-1] && digRight[8+k-i]){ //可行位置
col[k] = i; //表示位置为K列的i行
row[i] = digLeft[k+i-1] = digRight[8+k-i] = false; //表示置有皇后
if (k == 8){ //找到一个可行解
for (j = 1; j <= 8; j++)
cout << j << " " << col[j] << '\t'; //列和行
cout << endl << "是否需要继续寻找(Q--表示退出,其他继续:)";
cin >> awn;
if (awn == 'Q'|| awn == 'q') exit(0);
}
else queen_all(k + 1); //递归至k+1列
row[i] = digLeft[k+i-1] = digRight[8+k-i] = true; //为下个可行方案做准备
}
}
#include <iostream>
using namespace std;
void queen_all(int k);//回溯的算法函数
int col[9];
bool row[9], digLeft[17], digRight[17];
int main()
{
int j;
for (j = 0; j <= 8; j++) row[j] = true;
for (j = 0; j <= 16; j++) digLeft[j] = digRight[j] = true;
queen_all(1);
return 0;
}
//8*8棋盘的第K列上找合理的配置
void queen_all(int k)
{
int i, j;
char awn; //存储是否继续寻找的标志
for (i = 1; i <= 8;i++) //依次在1至8行上配置K列的皇后
if (row[i] && digLeft[k+i-1] && digRight[8+k-i]){ //可行位置
col[k] = i; //表示位置为K列的i行
row[i] = digLeft[k+i-1] = digRight[8+k-i] = false; //表示置有皇后
if (k == 8){ //找到一个可行解
for (j = 1; j <= 8; j++)
cout << j << " " << col[j] << '\t'; //列和行
cout << endl << "是否需要继续寻找(Q--表示退出,其他继续:)";
cin >> awn;
if (awn == 'Q'|| awn == 'q') exit(0);
}
else queen_all(k + 1); //递归至k+1列
row[i] = digLeft[k+i-1] = digRight[8+k-i] = true; //为下个可行方案做准备
}
}
相关文章推荐
- 回溯法,并用回溯法请求0/1背包问题和皇后问题
- 回溯法_n皇后问题
- 回溯法N皇后问题(以8为例)
- N皇后问题(回溯法)
- 回溯法求解N皇后问题(Java实现)
- N皇后问题(回溯法)
- 回溯法解决N皇后问题(以四皇后为例)
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- n皇后问题回溯法用swift实现
- 8皇后问题--回溯法 (循环递归)
- 算法试验8皇后问题-回溯法 PS参考了百度的一些大神的思路
- 7.4.1八皇后问题(经典回溯法)
- (回溯法)N皇后问题
- 算法分析与设计实验三 回溯法 24点问题 n皇后问题
- HDU-2553 N皇后问题(暴力回溯法)
- 用试探回溯法解决N皇后问题
- [硕.Love Python] 高斯N皇后问题(回溯法)
- 回溯法求解N皇后问题。
- 通过8皇后问题浅析回溯法的递归实现