算法实验指导V20.doc

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法实验指导V20

算法设计与分析 实验指导书 版本 作者 时间 备注 V1.00 王博 2006 10 09 初始结构 V1.01 王博 2006 10 10 对附录部分进行了修订,完成实验一的内容 V1.02 王博 2006 11 10 安排了算法的全部内容 V1.03 王博 2006 11 19 对部分算法进行了补充 V1.03 王博 2006 11 21 补充了算法实现的代码和作了相关的说明 V1.04 王博 2006 12 14 补充了试验七和试验八的内容 V1.05 王博 2006 12 20 对实验八进行了更新,并且添加了代码 V2.00 王博 2007 10 09 重新安排了适合07 -08 年度的算法设计与分析实验 西安邮电学院计算机系 对于学习算法设计与分析的计科学生,要求完成如下的实验: 实验次数 实验内容 备注 1 算法复杂度和递归 2 分治法实验 3 动态规划和贪婪算法 4 回溯法和分支限界 注意: 1 实验报告总共完成四次就可以了,对应该指导书的次数即可; 2 注意在完成每一次实验的时候,需要理一下思路,按照自己的算法思想进行程序的编制,最好画一下流程图和写一下算法的大致的思路,然后再编写; 3 对于每一种算法掌握其核心 (1) 分治法,理解如何把大问题划分成小问题,而且是独立的小问题,这是问题的关键所在,然后采用递归算法进行实现。一定要理解递归,递归实现简单,但是理解却很难,理解他可以采用两种方式:栈模拟或者调用树。典型的范例是,二分查找(最简单)、归并排序和棋盘覆盖(很有技巧); (2) 动态规划:分析其递归关系,这很重要,是算法实现的关键所在。递归关系的策略在于逐步缩小规模,直至可以计算为止。注意动态规划采用表格记录上一次的计算结果,采用自底向上的策略来实现递归关系; (3) 贪婪算法:理解贪心选择性质很重要,这是解题的关键所在。贪心算法往往对问题进行某种排序,然后进行最优的选择,所以排序成为问题的关键。贪心算法理解比较简单,实现也不是很难。典型的范例是:活动安排,装载问题和部分背包问题。 4 关于多重指针 在C语言中使用多重指针要注意,对于指针的[]运算是受限制的。教材中大量使用了二级指针,大家在win-TC下使用时一定要注意——可以采用下面的策略,下面的几个范例说明在C语言中使用数组向指针的赋值问题,请仔细阅读: Code1: 二级指针(注意:下面的代码是不正确的——得不到正确的运行结果,请对比Code2) void print(int** p,int m, int n) { int i=0 , j=0; for(i=0; im; i++) for(j=0; jn; j++) printf(%d\n ,p[i][j]); } main() { int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int **p; p =a; print(p,3,4); getch(); } Code2: 二级指针 void print(int** p,int m, int n) { int i=0 , j=0; for(i=0; im; i++) for(j=0; jn; j++) printf(%d\n ,p[i][j]); } main() { static int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; static int *p[] = {a[0],a[1],a[2]}; int **q; q =p; print(q,3,4); getch(); } Code3: 三级指针 void print(int*** p,int m, int n ,int t) { int i=0 , j=0,k=0; for(i=0; im; i++) for(j=0; jn; j++) for(k=0; kt; k++) { printf(%d\n ,p[i][j][k]); sleep(1); } } main() { static int a[2][3][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; static int

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档