程序z递推求解.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文档。上传文档
查看更多
hdoj 2018母牛的故事解题报告 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 解题思路:1理解题意!出生的小母牛每活三年就能再生新的小母牛了。      2f(1)=1 f(2)=2 f(3)=3 f(4)=4 f(5)=6当第n年的时候,所有的牛应该有 第n-1年的牛+第n-3年的年(都能生),               推出f(n)=f(n-1)+f(n-3)      PS:其实刚开始我把前面8项都列出来直接就能推出了~~上面是思路。 #include stdio.h int main() { int j,n,a[60]; scanf(%d,n); while(n!=0) { a[1]=1; a[2]=2; a[3]=3; for(j=4;j=n;j++) a[j]=a[j-1]+a[j-3]; printf(%d\n,a[n]); scanf(%d,n); } } hdoj 1207(解决n=64问题)解题报告 Gardon是个怕麻烦的人(恩,就是爱偷懒的人),很显然将64个圆盘逐一搬动直到所有的盘子都到达第三个柱子上很困难,所以Gardon决定作个小弊,他又找来了一根一模一样的柱子,通过这个柱子来更快的把所有的盘子移到第三个柱子上。下面的问题就是:当Gardon在一次游戏中使用了N个盘子时,他需要多少次移动才能把他们都移到第三个柱子上?很显然,在没有第四个柱子时,问题的解是2^N-1,但现在有了这个柱子的帮助,又该是多少呢?(1=N=64)。 总结:挺喜欢的一道题,对于刚入门的菜鸟我来说有难度,实在做不出来就在网上搜了下解题报告,然后自己纠结了3个小时,终于AC了!! 解题思路:    1如果用三个柱子移动,移动次数是最多的,是2的n次方-1;(最好理解用三个柱子移动的方法)      (思考:设四个柱子编号为1234,起始是1,目的是4,要将n个盘从1移到4,可以将n-1个先移到2,将第n个移到4这            就是一个步骤,这就是三个柱子的移动效果,3号柱子一直没被用到。显然这是最多次的(无视那些一个盘子在两个柱          子移来移去的情况~~~))    2用4个柱子时,从1移到目的柱4,可以将上面的x个盘子先移到2(依靠4个柱子,总方法数是f(x),变成递推了),然后剩(n-     x)个盘子依靠134三个柱子(此时的2号柱子放的是小盘,大盘放不上,所以只能用三个柱子)移动到4,次数应该是        2的(n-x)次方-1!再把上面的x个放上4,又是依靠4个柱子,总方法数是f(x);    3x应该是多大呢?都有可能,可能取一个时总方法数最小,可能取n-1个时总方法数最小,用一个for循环解决,找出最小的。    4惨痛的经历,发现当n=64时,数组如果用__int64也就是long long定义不够算,溢出了!我换成double过了。数组定义的时候     要小心呀,小小的问题郁闷死人了。 #include stdio.h #include math.h int main() { int i,j,n; double a[70],min; while(scanf(%d,n)!=EOF) { a[1]=1; a[2]=3; a[3]=5; for(i=4;i=n;i++) { min=99999; for(j=1;ji;j++) { if(2*a[j]+pow(2,i-j)-1min) min=2*a[j]+pow(2,i-j)-1; } a[i]=min; } printf(%.0f\n,a[n]); } hdoj 2046骨牌铺方格解题报告 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格。。 解题思路:1画图,画一个以2为底,以n为高的长方形(底和高~~)      2f(1)=1,f(2)=2,f(3)=5,当有n个方格的时候,有两种铺法:          1)先铺好n-1个格,有f(n-1)个方法,再铺第n层的

文档评论(0)

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

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

1亿VIP精品文档

相关文档