算法实验 递归回溯解八皇后问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳大学实验报告
课程名称:算法分析与复杂性理论
实验项目名称:八皇后问题
学院:计算机与软件学院
专业:软件工程
指导教师:杨烜
报告人:学号:班级:15级软工学术型
实验时间:2015-12-08
实验报告提交时间:2015-12-09
教务部制
一.实验目的
1.掌握选回溯法设计思想。
2.掌握八皇后问题的回溯法解法。
二.实验步骤与结果
实验总体思路:
根据实验要求,通过switch选择八皇后求解模块以及测试数据模块操作,其中八皇后模块调用摆放皇后函数模块,摆放皇后模块中调用判断模块。测试数据模块主要调用判断模块进行判断,完成测试。用一维数组保存每行摆放皇后的位置,根据回溯法的思想递归讨论该行的列位置上能否放置皇后,由判断函数Judge()判断,若不能放置则检查该行下一个位置。相应结果和过程如下所示(代码和结果如下图所示)。
回溯法的实现及实验结果:
1、判断函数
代码1:
procedure BTrack_Queen(n)
皇后问题 2.测试数据0.退出**"< cout<<"******************************************"< cin>>n; switch(n){ case 0: cout<<"退出程序成功..."< return 0; //一个程序两个出口 case 1: cout<<"八皇后问题的解为:"< BackTrack_Queen(0); cout<<"共有"< break; case 2: cout<<"运行测试数据:"< while(1) { cout<<"请输入要测试的数据:"< for(int j=0;j cin>>queen[j]; if(Judge(max)==1) cout<<"该数据是八皇后问题的解"< else cout<<"该数据不是八皇后问题的解"< } break; default: cout<<"输入非法,请重新输入!"< } } return 0; } 注:MFC实现代码下载:若链接无效可加我百度云好友:123望月台456