算法设计与分析程报告.docVIP

  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.蛮力算法(25分) 数值问题:设x=2,n=30,a0= n,a1= n-1,a3= n-2,…,an-2=2,an-1=1,要求用蛮力算法求解多项式p(x)= a0x0+a1x1+…+an-2 xn-2+an-1 xn-1的值。 1.1算法基本思想;(2分) 答:蛮力算法是根据问题的定义,根据问题的步骤,直接了当地对问题进行求解。蛮力算法的核心就是直接去做,直接去解决问题。 1.2算法描述(可以用流程图、自然语言或伪代码来描述);(3分) 答:据p(x)= a0x0+a1x1+…+an-2 xn-2+an-1 xn-1基于问题定义设计算法:直接先分别算出两个乘数,再求两个数的成绩,最后累加。 1.3算法实现的C源程序代码;(6分) #includestdio.h #includemath.h void main() { int x,n,i,A,X; double p=0,sum=0; printf(请输入x n:); scanf(%d %d,x,n); for(i=0;in;i++) { X=pow(x,i); A=n-i; sum=A*X; p=p+sum; } printf(多项式的值为:%.0f\n,p); } 1.4程序运行结果的屏幕截图;(6分) 1.5算法分析(可以从算法复杂度、优缺点或改进方法等角度来分析)。(6分) 答:①该算法时间复杂度为O(n),简短清晰便于阅读。 ②在健壮性方面,此算法只对少量输入能做出正确的处理,在使用范围上有很大的限制性。如输入x=2,n=32,结果出错,如下图所示: 2 .分治算法(25分) 查找问题:输入100个整数,使用分治算法实现折半查找,统计某个整数出现的次数。 2.1算法基本思想;(2分) 答:将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。 步骤:划分求解子问题合并#include iostream using namespace std; void InsertSort(int A[] , int n)//插入排序 { int i,j,temp; for(i=1;in;i++) { j=i; temp=A[i]; while(j0tempA[j-1]) { A[j]=A[j-1]; j--; } A[j]=temp; } } int BinSearch(int A[] , int key,int low,int high)//二分查找 { int mid; static int j=0; while(low=high) { mid=(low+high)/2; if(key==A[mid]){ j++; BinSearch( A,key,low,mid-1); BinSearch( A,key,mid+1,high); return j; } else if(keyA[mid]) high=mid-1; else low=mid+1; } return -1; } void main() { int n,i,key,j; int low=0; int high; printf(请输入要排序的数的个数:); scanf(%d,n); high=n; int *a=new int[n]; printf(请输入要排序的数:); for(i=0;in;i++) scanf(%d,a[i]); printf(排序后的数为:); InsertSort(a,n); for(i=0;in;i++) printf(%d ,a[i]); printf(\n); printf(请输入要查找的数:); scanf(%d,key); j=BinSearch(a,key,low,high); if(j==-1) printf(未查到你要找的数!\n); else printf(查找结果为:%d\n,j); } 2.4程序运行结果的屏幕截图;(6分) 2.5算法分析(可以从算法复杂度、优缺点或改进方法等角度来分析)。(6分) 答:该算法有很大的局限性,在查找完成之后并不能准确统计出某个整数出现的次数。 3. 贪心算法(25分) 活动安排问题:根据

文档评论(0)

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

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

1亿VIP精品文档

相关文档