八皇后问题

王朝c/c++·作者佚名  2006-01-06
宽屏版  字体: |||超大  

通过创建一个8元素数组queenlist,递归函数placeQueen()具体执行此回溯算法。此数组的每个索引值都对应着棋盘上的一列,queenlist[col]值就是皇后所处的安全行数row。下面程序声明一个棋盘board,再使用setQueens()函数确定皇后再棋盘上8个安全位置。最后调用drawBoard()函数再棋盘上显示答案。

//文件:prg15——6.cpp

//此程序可以解决八皇后问题。程序提示用户输入皇后在0列的起始行并调用递归函数

//queens()确定是否有解决方案。如果有则将皇后的位置传到chessboard对象board

//并调用其drawBoard()函数显示皇后的布置。

#include<iostream.h>

#include”d_queens.h”

using namespace std;

int main()

{

int row;

vector<int>queenlist(8);

chessboard board;

//为0列皇后输入起始行

cout<<”Enter row for queen in column 0:”;

cin>>row;

cout<<endl;

//查看是否有解决方案

if (queens(queenlist, row))

{

board.setQueens(queenlist);

//显示解决方案

board.drawBoard();

}

else

cout<<”No solution”<<endl;

return 0;

}

第一次运行结果

0 1 2 3 4 5 6 7

0 Q

1 Q

2Q

3 Q

4 Q

5 Q

6 Q

7 Q

第二次运行结果

0 1 2 3 4 5 6 7

0 Q

1 Q

2 Q

3

4 Q

5Q Q

6 Q

7 Q

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有