猴子吃桃问题数据结构解决.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
猴子吃桃问题数据结构解决

实习报告 题目:猴子吃桃问题 一、需求分析 1.题目要求 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 1)采用数组数据结构实现上述求解;2)采用链数据结构实现上述求解;3)采用递归 实现上述求解。 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示提示信息之后,由用户在键盘上输入演示程序中需要输入的数据,运算结果显示在其后。 概要设计 一个猴子摘了一些桃子,它每天吃了其中的一半然后再多吃了一个, 直到第10天,它发现只有1个桃子了,问它第一天摘了多少个桃子? 猴子分N天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,.......因此,有: a1=(a2+1)*2; a2=(a3+1)*2; a3=(a4+1)*2; ...... a9=(a10+1)*2; a10=1; 详细设计 1) 采用数组数据结构实现 #include iostream using namespace std; static unsigned short arr[10]={0,0,0,0,0,0,0,0,0,1}; void main() { for (int i=9; i0; i--) { arr[i-1]=2*(arr[i]+1); cout第i+1天还剩桃子:arr[i]endl; } cout第1天还剩桃子:arr[0]endl; } 2) 采用链数据结构实现 #include iostream using namespace std; struct data { unsigned short total; data* next; }; void main() { data* p0; //哨兵结点 data* p1; p0=p1=new data; p0-total=1; //第十天剩1个桃 p0-next=p1; for (int i=9; i=1; i--) { p1=new data; p1-total=2*((p0-next)-total+1); p1-next=p0-next; p0-next=p1; } p1=p0-next; for (i=1; i=10; i++) { cout第i天还剩桃子:p1-totalendl; p1=p1-next; } } 3) 采用递归实现 #include iostream using namespace std; int eat(int n) { if (10==n) return 1; else return 2*(eat(n+1)+1); } void main() { for (int i=1; i=10; i++) cout第i天还剩桃子:eat(i)endl; } 四 测试结果 1.数组数据结构实现 2 链???据结构实现 3.递归实现

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档