实验报告电子版Word文件下载.docx

上传人:b****5 文档编号:16744274 上传时间:2022-11-25 格式:DOCX 页数:13 大小:117.36KB
下载 相关 举报
实验报告电子版Word文件下载.docx_第1页
第1页 / 共13页
实验报告电子版Word文件下载.docx_第2页
第2页 / 共13页
实验报告电子版Word文件下载.docx_第3页
第3页 / 共13页
实验报告电子版Word文件下载.docx_第4页
第4页 / 共13页
实验报告电子版Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验报告电子版Word文件下载.docx

《实验报告电子版Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验报告电子版Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

实验报告电子版Word文件下载.docx

(1)电子版提交说明:

a需要提交Winrar压缩包,文件名为“《算法设计与分析》实验一_学号_姓名”,

如“《算法设计与分析》实验一_09290101_张三”。

b压缩包内为一个“《算法设计与分析》实验一_学号_姓名”命名的顶层文件夹,

其下为两个文件夹,一个文件夹命名为“源程序”,另一个文件夹命名为“实验

报告电子版”。

其下分别放置对应实验成果物。

(2)打印版提交说明:

a不可随意更改模板样式。

b字体:

中文为宋体,大小为10号字,英文为TimeNewRoman,大小为10号

字。

c行间距:

单倍行距。

(3)提交截止时间:

2012年10月31日16:

00。

三、实验项目

1.运用递归策略设计算法实现下述题目的求解过程。

题目列表如下:

(1)运动会开了N天,一共发出金牌M枚。

第一天发金牌1枚加剩下的七分之一枚,第二天发金牌2枚加剩下的七分之一枚,第3天发金牌3枚加剩下的七分之一枚,以后每天都照此办理。

到了第N天刚好还有金牌N枚,到此金牌全部发完。

编程求N和M。

(2)国王分财产。

某国王临终前给儿子们分财产。

他把财产分为若干份,然后给第一个儿子一份,再加上剩余财产的1/10;

给第二个儿子两份,再加上剩余财产的1/10;

……;

给第i个儿子i份,再加上剩余财产的1/10。

每个儿子都窃窃自喜。

以为得到了父王的偏爱,孰不知国王是“一碗水端平”的。

请用程序回答,老国王共有几个儿子?

财产共分成了多少份?

(3)出售金鱼问题:

第一次卖出全部金鱼的一半加二分之一条金鱼;

第二次卖出乘余金鱼的三分之一加三分之一条金鱼;

第三次卖出剩余金鱼的四分之一加四分之一条金鱼;

第四次卖出剩余金鱼的五分之一加五分之一条金鱼;

现在还剩下11条金鱼,在出售金鱼时不能把金鱼切开或者有任何破损的。

问这鱼缸里原有多少条金鱼?

(4)某路公共汽车,总共有八站,从一号站发轩时车上已有n位乘客,到了第二站先下一半乘客,再上来了六位乘客;

到了第三站也先下一半乘客,再上来了五位乘客,以后每到一站都先下车上已有的一半乘客,再上来了乘客比前一站少一个……,到了终点站车上还有乘客六人,问发车时车上的乘客有多少?

(5)猴子吃桃。

有一群猴子摘来了一批桃子,猴王规定每天只准吃一半加一只(即第二天吃剩下的一半加一只,以此类推),第九天正好吃完,问猴子们摘来了多少桃子?

(6)小华读书。

第一天读了全书的一半加二页,第二天读了剩下的一半加二页,以后天天如此……,第六天读完了最后的三页,问全书有多少钱页?

(7)日本著名数学游戏专家中村义作教授提出这样一个问题:

父亲将2520个桔子分给六个儿子。

分完后父亲说:

“老大将分给你的桔子的1/8给老二;

老二拿到后连同原先的桔子分1/7给老三;

老三拿到后连同原先的桔子分1/6给老四;

老四拿到后连同原先的桔子分1/5给老五;

老五拿到后连同原先的桔子分1/4给老六;

老六拿到后连同原先的桔子分1/3给老大”。

结果大家手中的桔子正好一样多。

问六兄弟原来手中各有多少桔子?

四、实验过程

(一)题目一:

……

1.题目分析

由题可知,最后一天发的金牌数一定是6的整数倍枚,所有由此可以建立递推关系式。

2.算法构造

gold=(melodyfun(i+1,n)*7/6+i);

3.算法实现

#include<

iostream>

cmath>

usingnamespacestd;

intmelodyfun(inti,intn)//递推函数

{

intgold=0;

if(i==n)

{

gold=6;

}

else

gold=(melodyfun(i+1,n)*7/6+i);

returngold;

}

voidmain()

intn=6;

intm;

for(inti=1;

i<

=n;

i++)

if(melodyfun(i,n)%6==0)

{

if(n==i)break;

n=n+6;

cout<

<

"

运动会连续召开"

<

n<

天"

endl;

共有金牌"

melodyfun(1,n)<

块。

"

endl;

4.运行结果

5.经验归纳

只要能顺利的找到递推关系式,问题就很好解决了。

题目

(二)

由题可知,最后一个儿子分的财产一定是9的整数倍

money[i]=money[i+1]*10/9+i;

intmain()

intn=9;

intmoney[1000];

for(inti=n;

i>

=1;

i--)

money[n+1]=0;

money[i]=money[i+1]*10/9+i;

for(intj=1;

j<

j++)

if(money[j]%9==0)

if(n==j)break;

n=n+9;

}

总共分了"

money[1]<

份"

共有"

个儿子"

找递推关系

题目(三)

从剩余的条数往上推即可;

num[day-i]=((num[day-i+1]+1)*(day-i+1))/(day-i)-1;

intmain()

intnum[100];

intleave;

剩余的金鱼数"

cin>

>

leave;

intday;

卖的天数"

day;

num[day]=leave;

for(inti=1;

i<

i++)

num[day-i]=((num[day-i+1]+1)*(day-i+1))/(day-i)-1;

金鱼数为:

num[1]<

return0;

找到递推关系即可

题目(四)

num[station-i]=(num[station-i+1]-i)*2;

intstation;

请输入车站数"

station;

intlastnum;

请输入最后一站剩余的人数"

lastnum;

num[station]=lastnum;

=station;

num[station-i]=(num[station-i+1]-i)*2;

始发时车上的人数为:

num[2]<

找到递推关系式即可;

题目(五)

num[day-i]=(num[day-i+1]+1)*2;

请输入剩余的桃子数"

请输入吃的天数"

=day;

num[day-i]=(num[day-i+1]+1)*2;

桃子总数为:

num[0]<

题目(六)

page[day-i]=(page[day-i+1]+2)*2;

intpage[100];

请输入剩余的页数"

请输入阅读的天数"

page[day]=leave;

page[day-i]=(page[day-i+1]+2)*2;

全书一共有"

page[0]<

页"

题目(七)

3.if(i==0)

a[0][1]=(average-average/(3-1))*8/7;

a[0][0]=a[0][1]*1/8;

a[i][1]=average*(8-i)/(8-1-i)-a[i-1][0];

a[i][0]=average*1/(8-1-i);

4.算法实现

inta[100][100];

intorange;

请输入桔子总数:

orange;

intchildren;

请输入孩子数"

children;

for(inti=0;

intaverage=orange/children;

if(i==0)

for(intj=0;

j++)

第"

j+1<

个孩子分到的桃子为:

a[j][1]<

5.运行结果

6.经验归纳

五、实验总结

做递归类问题,一定要根据题目给的信息分析出递推关系式,然后求解

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1