




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告实验名称 n皇后问题 课程名称 计算机算法设计与分析 专业班级: 学生姓名:学 号: 成 绩:指导老师: 实验日期:一、 实验内容要求在一个n*n的棋盘上放置n个皇后,使得它们彼此不受攻击。一个皇后可以攻击与之处在同一行或同一列或同一斜线上的任何其他棋子。二、 实验基本思想 典型深度优先遍历,假设某一行为当前状态,不断检查该行所有的位置是否能放一个皇后,检索的状态有两种: (1)先从首位开始检查,如果不能放置,接着检查该行第二个位置,依次检查下去,直到在该行找到一个可以放置一个皇后的地方,然后保存当前状态,转到下一行重复上述方法的检索。 (2)如果检查了该行所有的位置均不能放置一个皇后,说明上一行皇后放置的位置无法让所有的皇后找到自己合适的位置,因此就要回溯到上一行,重新检查该皇后位置后面的位置。三、 算法设计 问题的解可表示为x1:n, 表示皇后i放在棋盘的第i行的第xi列。 a)xixj ,ij :不允许将任何两个皇后放在同一列上; b)|j-i|xj-xi| :不允许两个皇后位于同一条斜线上。问题的解空间的形式为:要找出”四皇后”问题的解,最可靠的方法就是把各种情况全部检核一遍,将符合条件A的解找出来。但这样做,你要有相当耐心才行,这是很费时的。采用回溯算法进行求解,在搜索的过程中,将不满足条件要求的分支树减去,可以有效的降低算法的时间复杂性。n后问题的算法描述如下:剪枝函数:bool Ok(int t) int i; for(int i=0;i=n)cout第sum个方案:n;for(int i=1;i=n;i+) for(int j=1;j=n;j+) if(j=xi) cout1; else cout0; coutendl; sum+; else for(int i=0;in;i+) xt=i; if(Ok(t) Backtrack(t+1); 四、 实验结果五、实验代码 #includeusing namespace std;int *x;/当前解int n;/皇后的个数N int sum=1;bool Ok(int t)/检查参数所指示的这一行皇后放置方案是否满足要求 int i; for(int i=0;i=n)cout第sum个方案:n;for(int i=1;i=n;i+) for(int j=1;j=n;j+) if(j=xi) cout1; else cout0; coutendl; sum+; else for(int i=0;in;i+) xt=i; if(Ok(t) Backtrack(t+1); void main()coutn; x=(int *)malloc(sizeof(int)*n); Backtrack(0); cout一共的方案数为:sum-1n;system(pause);六、实验心得通过本次实验的学习,让我了解到了用回溯法可以搜索问题的所有解。它是一个既带有系统性又带有跳跃性的搜索算法,是按照深度优先策略,从根节点出发搜索解空间树。算法搜索至某一节点时,利用判断函数先判断该节点内是否包含问题的解,如果不包含则直接跳过,节省时间。相关的判断函数要根据实际问题来编写,此比较适合求解组合数较大的问题。总的来说,这次实验不仅让我基本掌握递归的思想,而且进一步提高了自己的自学能力
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区与医院签订合同协议
- 汽油发电机购买合同范本
- 浙江网上申请就业协议书
- 终止车辆承包合同协议书
- 高校县中托管帮扶协议书
- 法律合同解除协议书范本
- 私人财产转移协议书范本
- 瓷砖店铺转让合同协议书
- 社区矫正基地服务协议书
- 洁净室车间出租合同范本
- 能源效率标识专项监督检查记录表
- 2023年消防接警调度理论考试题库(浓缩500题)
- GBZ/T(卫生) 254-2014尿中苯巯基尿酸的高效液相色谱测定方法
- GB/T 5905-2011起重机试验规范和程序
- GB/T 15972.1-1998光纤总规范第1部分:总则
- 应聘人员申请表
- 关心下一代工作先进工作者事迹
- 广西壮族自治区桂林市各县区乡镇行政村村庄村名明细居民村民委员会
- 脉动真空压力蒸汽灭菌器故障应急预案流程
- 诉讼费退费确认表
- 食品企业客诉处理培训
评论
0/150
提交评论