- 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
实 验 报 告
课程名称: 算法设计与分析 实验项目: 算法设计与分析 姓 名: 李守家 专 业: 计算机科学与技术 班 级: 计09-2 学 号: 0904010215
计算机科学与技术学院
实验教学中心
2011年 11月 3日
实验项目名称: 猴子爬山问题
实验目的
用C语言或C++语言编程实现猴子爬山问题。
实验内容
1.一个顽猴在一座有30级台阶的小山上爬山跳跃,猴子上山一步可跳1级,或跳3级,试求上山的30级台阶有多少种不同的爬法。
2.扩展:把问题引申为爬山n级,一步有m种跨法,一步跨多少级从键盘输入。
分级递推算法设计
设爬山t台阶级的不同爬法为f(t),设从键盘输入一步跨多少级的m个整数分别为x(1),x(2),…,x(m)(约定x(1)x(2)…x(m)x(m)n)。
这里的整数x(1),x(2),…,x(m)为键盘输入,事前并不知道,因此不能在设计时简单地确定f(x(1)),f(x(2)),…。
事实上,可以把初始条件放在分级递推中求取,应用多关系分级递推算法(6)完成递推。
首先探讨f(t)的递推关系:
当tx(1)时,f(t)=0;f(x(1))=1。(初始条件)
当x(1)t=x(2)时,第1级递推:f(t)=f(t-x(1));
当x(2)t=x(3)时,第2级递推:f(t)=f(t-x(1))+f(t-x(2));
……
一般地,当x(k)t=x(k+1),k=1,2,…m-1,有第k级递推:
f(t)=f(t-x(1))+f(t-x(2))+…+f(t-x(k))
当x(m)t时,第m级递推:
f(t)=f(t-x(1))+f(t-x(2))+…+f(t-x(m))
当t=x(1),或t=x(2),…,或t=x(m)时,按上递推求f(t)外,还要加上1。道理很简单,因为此时t本身即为一个一步到位的爬法。为此,应在以上递推基础上添加:
f(t)=f(t)+1 (t=x(2),x(3),…,x(m))
我们所求的目标为:
f(n)=f(n-x(1))+f(n-x(2))+…+f(n-x(m))
这一递推是我们设计的依据。
在递推设计中我们可把台阶数n记为数组元素x(m+1),这样处理是巧妙的,可以按相同的递推规律递推计算,简化算法设计。最后一项f(x(m+1)即为所求f(n)。
最后输出f(n)即f(x(m+1)时必须把额外所添加的1减去。以上分级递推算法是新颖的,其时间复杂度O(nm),空间复杂度为O(n)。
实验步骤
这一问题实际上是一个整数有序可重复拆分问题,试应用数组递推求解。
设爬k级台阶的不同爬法为f(k)种,首先探求f(k)的递推关系。
上山最后一步到达第30级台阶,完成上山,共有f(30)种不同的爬法:到第30级之前位于哪一级呢?无非是位于第29级(上跳1级即到),有f(29)种:或位于第27级(上跳3级即到),有f(27)种:于是
f(30)=f(29)+f(27)
依此类推,一般地有递推关系:
f(k)=f(k-1)+f(k-3) (k3)
初始条件:
f(1)=1;即1=1
f(2)=1;即2=1+1
f(3)=2;即3=1+1+1;3=3
根据以上递推关系与初始条件,设置一重循环应用递推模式(1)即可求出f(n)。
实验结果
1.
2.
程序代码
1.
#includestdio.h
void main()
{ int k,n;long f[1000];
printf(“请输入台阶总数n:”);
scanf(“%d”,n);
f[1]=1;f[2]=1;f[3]=2; /*数组元素赋初值*/
for (k=4;k=n;k++)
f[k]=f[k-1]+f[k-3]; /*按递推关系实施递推*/
printf(“s=%ld”,f[n]);
}
2.
#includestdio.h
void main()
{ int i,j,k,m,n,t,x[10];
long f[200];
printf(“请输入总台阶数:”);
scanf(“%d”,n); /*输入台阶数*/
printf(“一次有几种跳法:”);
scanf(“%d”,m);
printf(“请从小到大输入一步跳几级。\n”);
for (i=1;i=m;i++) /*输入m个一步跳级数*/
{ printf(“第%d个一步可跳级数:”,i);
scanf(“%d”,x[i]);
for (i=1;i=x[1]-1;i++) f[i]=0;/*确定初始条件*/
x[m+1]=n
您可能关注的文档
- 西安职业技术学院09级园林技术园林苗木生产技术B.doc
- 西方心理学史期末复习重点整理版1.doc
- 西方国家无法理解的23种亚洲美食.doc
- 西方经济学复习练习题(填空.doc
- 西方经济学测试题目.doc
- 西方经济学真题满分答案5.doc
- 西望村紫砂专业合作社调研报告.doc
- 西泊夫K11通用防水施工方案.doc
- 西洋参泡酒的功效与禁忌.doc
- 西班牙葡萄酒的5种主要分级(原创首发).doc
- 16万t锌冶炼改扩建项目环境影响报告书.pdf
- ESCWA-利用遥感技术估算灌溉用地下水数量——摩洛哥Bahira含水层案例.pdf
- 英文毕马威-毕马威2025年ESG保证成熟度指数.pdf
- AI大模型与异构算力融合技术白皮书.pdf
- 英文ESCWA-利用遥感技术估算灌溉用地下水数量——摩洛哥Bahira含水层案例.pdf
- 崇州领益模具、金属绝缘产品技改项目环境影响报告表.pdf
- 吐鲁番X波段双偏振天气雷达系统建设项目报告表.pdf
- 川酒集团酱酒有限公司永乐基地锅炉技改项目环境影响报告表.pdf
- 崇州市全友家私总平面布局优化及木家具生产线改建项目环境影响报告书.pdf
- 川渝特高压交流工程(阿坝—成都东1000千伏特高压交流输变电工程)环境影响报告书.pdf
最近下载
- 地下水监测检验检测报告(范本).docx VIP
- 2026广东省农村信用社联合社秋季校园招聘笔试备考题库及答案解析.docx VIP
- 2025宁夏德润农业发展投资集团有限公司招聘综合笔试上岸历年真考点题库附带答案详解.doc
- 设计方法学完整版.pptx VIP
- 学生会纪检部部长竞选的演讲稿PPT.pptx VIP
- 标准图集-西南11J-西南地区建筑标准设计通用图合订本.pdf VIP
- 专项培优8 一元强酸(碱)与一元弱酸(碱)的性质比较及稀释图像 学案(含答案)2026届高三化学一轮总复习.doc VIP
- 超星学习通网课《中日茶道文化》尔雅答案2025题目及答案.doc
- 传媒公司经营发展计划方案.docx
- 2024广东省农村信用社联合社春季校园招聘笔试备考题库及答案解析.docx VIP
文档评论(0)