网站大量收购独家精品文档,联系QQ:2885784924

皇后问题的实现.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
皇后问题的实现

学 生 实 验 报 告 学 院: 软件与通信工程学院 课程名称: C++课程设计 专业班级: 10软件1班 姓 名: 黄道炜 学 号: 0103815 学生实验报告(3) 学生姓名 黄道炜 学号 0103815 同组人 实验项目 皇后问题的实现 □必修 □选修 □演示性实验 □验证性实验 □操作性实验 □综合性实验 实验地点 W102 实验仪器台号 指导教师 赵晓平 实验日期及节次 2011.9.28(三) 567节 2011.10.12(三) 567节 2011.10.19(三) 567节 一、实验综述 1、实验目的及要求 (1)了解深度(广度)优先搜索算法; (2)了解回溯法有关的基本概念,了解回溯算法的设计策略; (3)综合运用回溯法和C++面向对象编程解决8皇后问题。 实验要求: 认真完成实验题,能正确运行,提交实验报告并上传程序,实验报告要求写出操作步骤、结果、问题、解决方法、体会等。 实验题: 在一个n×n的棋盘上放置n个皇后,要求放置的n个皇后不会互相吃掉;皇后棋子可以吃掉任何它所在的那一行、那一列,以及那两条对角线上的任何棋子。2、实验仪器、设备或软件 计算机、VC++6.0、office、相关的操作系统等。 二、实验过程(实验步骤、记录、数据、分析) #include iostream using namespace std; class Queen { private: int n; bool *row; bool *diag; bool *backdiag; int *x; void backtracking(int c); void show(); public: Queen(int num=8); void run() {backtracking(1);} }; void Queen::backtracking(int c) { if(cn) show(); else { for(int r=1;r=n;r++) { if(!row[r]!diag[n-c+r]!backdiag[r+c-1]) { row[r]=diag[n-c+r]=backdiag[r+c-1]=true; x[c]=r; backtracking(c+1); row[r]=diag[n-c+r]=backdiag[r+c-1]=false; } } } } void Queen::show() { static int num=0; cout第++num个解:; cout(x[1]; for(int i=2;i=n;i++) cout,x[i]; cout)endl; } Queen::Queen(int num) { n=num; row=new bool[n+1]; diag=new bool[2*n]; backdiag=new bool[2*n]; x=new int[n+1]; int i; for(i=1;i=n;i++) row[i]=false; for(i=1;i2*n;i++) diag[i]=false; for(i=1;i2*n;i++) backdiag[i]=false; } int main() { Queen objqueen(8); objqueen.run(); return 0; } 三、结论结 后还有67解! 2、分析讨论 如果要自己想还是有点困难的,主要是参考书上的分析方法,利用回溯法进行求解。 四、指导教师评语及成绩: 成绩: 指导教师签名: 批阅日期: √ √

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档