1、数学与计算机学院实验报告版面要求:A3页面,双面打印学年学期2015-2016 学年 03学期课程名称算法设计与分析专 业计算机科学与技术班 级2014级一班学 号LX14115150姓 名申畅恒任课教师苏鹏一、实验项目信息项目名称: 回溯法 实验时间: 2016/06/08 实验学时: 03 学时实验地点: 工科楼503 二、实验目的及要求理解回溯法的深度优先搜索策略、掌握用回溯法解题的算法框架、掌握回溯法的设计策略三、实验环境计算机Ubuntu Kylin14.04CodeBlock软件四、实验内容及实验步骤排兵布阵问题某游戏中,不同的兵种处在不同的地形上其攻击能力不一样,现有n个不同兵种
2、的角色1,2,.,n,需安排在某战区n个点上,角色i在j点上的攻击力为Aij。试设计一个布阵方案,使总的攻击力最大。数据:防卫点角色123451604080506029060807020330504050804904030709056080906050回溯法:程序:#includeint position10;int a1010;int check(int k)/每个节点检查的函数int i;for(i=0;ik;i+)if(positioni=positionk)return 0;/重复返回0return 1;void gameSort(int n)int i,k;int max=0;int
3、 ans10;int sum;for(i=0;i=0)sum=0;positionk=positionk+1;while(positionk=n)if(check(k)break;else positionk=positionk+1;if(positionk=n & k=n-1)for(i=0;in;i+)sum+=aipositioni-1;if(maxsum)max=sum;for(i=0;in;i+)ansi=positioni;if(positionk=n&kn-1)k=k+1;elsepositionk-=0;printf(answer is:);for(i=0;in;i+)prin
4、tf(%d,%d) ,i+1,ansi);printf(n);printf(the largest number is:%d,max);void main()int i,j,n;printf(please input n:);scanf(%d,&n);for(i=0;in;i+)for(j=0;jn;j+)scanf(%d,&aij);gameSort(n); printf(n);五、实验结果分析程序运行:得到正确结果六、实验总结通过实验对回溯法求解的概念更加熟悉,对回溯法的程序算法深入理解。掌握如何编写回溯法的框架以及回溯法的检测(check())函数。能够对一个问题进行分析是否能够使用回溯法求解。七、教师评价批阅教师成绩批阅时间教师评语