(算法设计与分析实验.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(算法设计与分析实验

实验一递归1.1实验目的1)掌握递归算法的概念,理解递归算法的思想2)掌握递归函数的写法,熟练运用递归函数3)正确分析递归算法的时空复杂度1.2 实验内容1)编写程序递归地实现阶乘函数;2)编写程序递归地实现Fibonacci数列;3)编写程序递归实现整数划分问题1.3 实验步骤1)写出阶乘函数的定义公式2)创建一个java程序,递归实现阶乘函数public static int factorial(int n){if(n==0) return 1;return n*factorial(n-1);}3)写出Fibonacci数列的定义公式4)创建一个java程序,递归实现Fibonacci数列public static int fibonacci(int n){if(n=1) return 1;return fibonacci(n-1)+fibonacci(n-2);}5)分析并写出整数划分的递归公式6)创建一个java程序,递归实现整数划分问题public static int q(int n,int m){if((n1)||(m1)) return 0;if((n==1)||(m==1)) return 1;if(nm) return q(n,n);if(n==m) return q(n,m-1)+1;return q(n,m-1)+q(n-m,m);}1.4 实验报告把实验内容(1),(2),(3)写到实验报告上。实验二分治策略2.1 实验目的1)掌握分治法的概念,理解分治法的思想2)掌握二分搜索,快速排序等最基本二分法的应用3)正确分析分治法的时空复杂度2.2 实验内容1)编程实现在一给定数列中查找某个元素;2)编程实现快速排序算法;3)编程实现最接近点对的问题。(选做)2.3 实验步骤1)写出二分搜索算法的伪代码2)创建一个java程序,编程实现二分搜索public static int binarySearch(int [] a,int x,int n){int left=0;int right=n-1;while(left=right){int middle=(left+right)/2;if(x==a[middle]) return middle;if(xa[middle]) left=middle+1;else right=middle-1;}return -1;}3)写出快速排序算法的伪代码4)创建一个java程序,编程实现快速排序private static void qSort(int p,int r){if(pr){ int q=partition(p,r); qSort(p,q-1); qSort(q+1,r);}}private static int partition(int p,int r){int i=p,j=r+1;Comparable x=a[p];while(true){ while(a[++i].compareTo(x)0 ir); while(a[--j].compareTo(x)0); if(i=j) break; MyMath.swap(a,i,j);}a[p]=a[j];a[j]=x;return j;}2.4 实验报告把实验内容(1),(2)写到实验报告上。实验三动态规划(一)3.1 实验目的1)掌握动态规划的概念,理解动态规划的思想2)掌握递归和递推这两种实现动态规划的实现方法3)正确分析动态规划的时空复杂度3.2实验内容1)编程实现矩阵连乘问题(对于给定的相继n个矩阵{A1,A2,…,An},如何确定计算矩阵连乘积A1A2…An的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少);2)编程实现最长公共子序列问题(给定两个序列X={x1,x2,…,xm}和Y={y1,y2,…yn},找出X和Y的最长公共子序列);3)编程实现3个序列的最长公共子序列问题。(选做)3.3实验步骤1)找出矩阵连乘问题中的状态转移方程设计算A[i:j],1=i=j=n,所需的最小数乘次数为m[i][j],则原问题的最优值为m[1][n].动态转移方程:2)创建一个java程序,编程实现矩阵连乘问题public static void matrixChain(int []p,int [][]m,int [][]s){ int n=p.length-1; for(int i=1;i=n;i++) m[i][i]=0; for(int r=2;r=n;r++) for(int i=1;in-r+

文档评论(0)

64348377 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档