资源描述:
《算法实验指导V1【精选】》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、算法设计与分析实验指导书版木作者时间备注VI.00上博20061009初始结构V1.01工博20061010对附录部分进行了修订,完成实验一的内容VI.02工膊20061110安排了算法的全部内容VI.03王博20061119对部分算法进行了补充VI.03王博20061121补充了算法实现的代码和作了相关的说明VI.04工博20061214补充了试验七和试验八的内容V1.05王博20061220对实验八进行了更新,并且添加了代码V2.00工膊20071009重新安排了适合07-08年度的算法设计与分析实验V2.01王博20071
2、019添加试验2的内容西安邮电学院计算机系对于学习算法设计与分析的计科学牛,要求完成如下的实验:实验次数实验内容备注1算法复朵度和递归2分治法实验3动态规划和贪婪算法4回溯法和分支限界注意:1实验报告总共完成四次就可以了,对应该指导书的次数即可;2注意在完成每一次实验的吋候,需要理一下思路,按照口己的算法思想进行程序的编制,最好画一下流程图和写一下算法的大致的思路,然后再编写;3对于每一种算法掌握具核心(1)分治法,理解如何把大问题划分成小问题,而11是独立的小问题,这是问题的关键所在,然后采用递归算法进行实现。一定要理解递归,
3、递归实现简单,但是理解却很难,理解他可以采用两种方式:栈模拟或者调用树。典型的范例是,二分查找(最简单)、归并排序和棋盘覆盖(很有技巧);(2)动态规划:分析具递归关系,这很重要,是算法实现的关键所在。递归关系的策略在于逐步缩小规模,直至可以计算为止。注意动态规划采用表格记录上一次的计算结果,采用自底向上的策略来实现递归关系;(3)贪婪算法:理解贪心选择性质很重要,这是解题的关键所在。贪心算法往往对问题进行某种排序,然后进行最优的选择,所以排序成为问题的关键。贪心算法理解比较简单,实现也不是很难。典型的范例是:活动安排,装载问题
4、和部分背包问题。4关于多重指针在C语言小使用多重指针要注意,对于指针的[]运算是受限制的。教材小大量使用了二级指针,大家在win-TC下使用时一定要注意一一可以采用下面的策略,下面的几个范例说明在C语言中使用数组向指针的赋值问题,请仔细阅读:Codel:二级指针(注意:下面的代码是不正确的——得不到正确的运行结果,请对比Code2)voidprint(int**p,intm,intn){inti=0,j=0;for(i=0;i5、{inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int**p;P=a;print(p,3,4);getch();Code2:二级指针voidprint(int**p,intm,intn){inti=0,j=0;for(i=0;i6、**q;q=p;print(q,3,4);gctch();}Code3:三级指针voidprint(int***p,intm,intn,intt){inti=0,j=O,k=O;for(i=0;i7、staticint*pl[]={&a[0][0],&a[0][l],&a[0][2]};staticint*p2[]={&a[l][0],&a[l][l],&a[l][2]};staticint*p[]={pl,p2};int***q;q=p;print(p,2,3,4);getch();}Code4JAVA的实现(这是比较简单的)classTeststaticvoidprint(int[][]a,intm,intn)fbr(inti=0;i8、(a[i][j]);}staticvoidprint(int[][][]a,intm,intn,intt){for(inti=0;i