- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
罗星星
武汉工业学院
数学与计算机学院
《算法设计与分析》
实验报告
专 业: 信息管理与信息系统
班 级: 信管1001班
学 号: 100502125
姓 名: 罗星星
指导老师: 黄川老师
2012年10月30日
实验一:递归&分治问题
【实验题目】
实验描述:课本P13 ,Hanoi塔问题
难度:简单
实验目的:通过Hanoi塔问题,巩固并详细分析递归过程
实验要求:编写完程序后,通过单步跟踪,随时注意递归调用函数栈。对n=3进行详细跟踪,
实验结果:如下格式,记录每一次移动圆盘的操作(盘子号码+重那个柱子+到那个柱子)。如n=3
1 AB
2 AC
1 BC
3 AB
【运行环境】
【设计思路】
本次实验需要用到两个函数,hanoi(int n,char a,char b,char c);
move(char x,char y);均来来实现圆盘的移动。其中hanoi(int n,char a,char b,char c) 这个函数主要采用递归的思想,不断的调用自身以及对move()函数的调用,同时通过move(char x,char y)这个函数实现圆盘在三根柱子上的移动。
【数据结构】
1、hanoi(int n,char a,char b,char c)// 将n个盘从a座借助b座,移到c座
move(char x,char y)
2、分别对每个函数的具体功能用具体的代码实现:
void hanoi(int n,char a,char b,char c){
if(n==1) move(a,b);
else {
hanoi(n-1,a,c,b);
move(a,b);
hanoi(n-1,c,b,a);
}
move(char x,char y){
printf(%c%c\n,x,y);
}
3、在主函数中实现对hanoi()函数的调用,打印输出运行的结果。
【流程图】
【实验结果】
实验结果由截图方式呈现如下:
【实验总结】
通过本次的实验,我了解到了Hanoi塔问题,更加通过Hanoi塔问题,巩固并详细分析递归过程。这次实验还算简单,主要是利用课本中已经给了的hanoi函数,只需要在主函数中编写对该函数的调用已经打印出输出结果。本次实验让我了解到递归的应用以及递归思想在解决问题中的重要性。在今后的学习中希望能多利用递归细想来解决问题。
武汉工业学院
数学与计算机学院
《算法设计与分析》
实验报告
专 业: 信息管理与信息系统
班 级: 信管1001班
学 号: 100502125
姓 名: 罗星星
指导老师: 黄川老师
2012年10月30日
实验二:N皇后问题(4学时)
【实验题目】
实验描述:课本P155 N皇后问题
难度:中(递归&界限函数)
实验目的:使用回溯法搜索排列树
实验要求: 理解回溯程序通用流程。注意函数调用时,何时回溯,何时递归
实验结果:8皇后问题是否有解,如果有,给出第一个解。
【运行环境】
【设计思路】
利用回溯法来求解N皇后问题。首先要将问题进行适当的转化,得出状态空间树。这棵树的每条完整路径都代表了一种解的可能。通过深度优先搜索这棵树,枚举每种可能的解的情况,从而得出结果。在深度优先搜索void Backtrack(int n,int * x,int sum)的过程中,不断的将每个解(并不一定是完整的)与约束函数bool Place (int k,int * x)进行对照,从而删除一些不可能的解,这样就不必继续把解的剩余部分列出,从而节省了部分时间。
【数据结构】
1、实验中所需要的个函数
void display()//打印出输出结果
void queens(int pos=0)//该函数包括了判定符合约束条件的皇后放置方案,如果符合就输出。还有递归搜索解空间。
在主函数中实现对queue(n) 函数的调用,打印出解的个数。。
【流程图】
【实验结果】
实验结果由截图方式呈现如下:
第一个解为:0 4 7 5 2 6 1 3
【实验总结】
通过本次的
文档评论(0)