C++八皇后问题.doc
《C++八皇后问题.doc》由会员分享,可在线阅读,更多相关《C++八皇后问题.doc(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、数据结构实验报告实验名称: 实验2八皇后问题学生姓名: 邱新龙班 级: 信通17班班内序号: 17号学 号: 日 期: 2013年11月15日1实验要求1 实验目的通过选择下面五个题目之一进行实现,掌握如下内容: 进一步掌握指针、模板类、异常处理的使用 掌握栈的操作的实现方法 掌握队列的操作的实现方法 学习使用栈解决实际问题的能力 学习使用队列解决实际问题的能力2 实验内容利用栈结构实现八皇后问题。 八皇后问题19世纪著名的数学家高斯于1850年提出的。他的问题是:在8*8的棋盘上放置8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列、同一斜线上。请设计算法打印所有可能的摆放方
2、法。提示:1、可以使用递归或非递归两种方法实现2、实现一个关键算法:判断任意两个皇后是否在同一行、同一列和同一斜线上2. 程序分析2.1入栈操作template void SeqStack:Push(T x) /入栈操作if(top=StackSize-1) throw 上溢;top+; /栈顶指针上移datatop=x;2.2出栈操作template void SeqStack:Pop() /出栈操作if(Empty() throw 下溢;top-; /栈顶指针下移2.3判断栈是否为空bool Empty() /判别栈是否为空if(top=-1) return true;else retur
3、n false; 2.4摆放皇后template void SeqStack:PlaceQueen(int row) /在栈顶放置符合条件的值的操作,即摆放皇后for (int col=0;colStackSize;col+) /穷尽07,即穷尽列Push(col);if (Judge() /判断摆放皇后的位置是否安全if (rowStackSize-1) /若还没有放到第八个皇后,则进行下一个皇后的放置PlaceQueen(row+1);elsesum+; /解数加1Print(); /打印成功的棋盘Pop(); /若不符合条件则出栈2.5判断皇后是否冲突template bool SeqS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 皇后 问题
限制150内