- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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分)
活动安排问题:根据
您可能关注的文档
最近下载
- 180°剥离力测试规范.doc VIP
- 行政执法人员资格认证通用法律知识考试单选题.docx VIP
- PP料 MSDS 物质安全表.pdf VIP
- 2025下半年高级软件水平考试(系统规划与管理师)案例分析真题及解析.pdf VIP
- 2025至2030全屋定制家具行业市场深度研究与战略咨询分析报告.docx VIP
- 福建省工会系统经审业务技能竞赛知识题库及答案(1692题).docx VIP
- 变电站脚手架专项施工方案.pdf VIP
- 道闸维修合同协议.docx VIP
- 16MR607 城市道路─节能环保型聚氯乙烯市政护栏.docx VIP
- 第一单元 100以内数加与减(二)教案-2025-2026学年北师大版二年级数学上册.pdf VIP
文档评论(0)