1 )一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱 L,石柱 L 面积只容得下一只青蛙落脚,同样右岸也有一石柱 R,石柱 R 面积也只容得下一只青蛙落脚。 2 )有一队青蛙从小到大编号:1,2,…,n。 3 )初始时:青蛙只能趴在左岸的石头 L 上,按编号一个落一个,小的落在大的上面---不允许大的在小的上面。 4 )在小溪中有 S 个石柱、有 y 片荷叶。 5 )规定:溪中的每个石柱上如果有多只青蛙也是大在下、小在上,每个荷叶只允许一只青蛙落脚。 6 )对于右岸的石柱 R,与左岸的石柱 L 一样允许多个青蛙落脚,但须一个落一个,小的在上,大的在下。 7 )当青蛙从左岸的 L 上跳走后就不允许再跳回来;同样,从左岸 L 上跳至右岸 R,或从溪中荷叶、溪中石柱跳至右岸 R 上的青蛙也不允许再离开。 问题:在已知小溪中有 s 根石柱和 y 片荷叶的情况下,最多能跳过多少只青蛙?
//a 石柱 b 荷叶
#include <stdio.h> int number(int a,int b) { if(a==0) //因为 s=0 时,数目已知所以当作递归结束条件(两个未知数) return b; else return 2*number(a-1,b); //每一个都是前一个两倍,直到 a==0 } int main() { int s,y; while(scanf("%d%d",&s,&y)!=EOF) { printf("%d\n",number(s,y+1)); } return 0;
}
我找到的答案都如上所示,是个递归问题。可是当石柱数量是 3 或 3 以上是,不是变成汉诺塔了吗,不是可以跳无数只到对岸吗?? 0 片荷叶,3 根石柱不是不止 8 只吗??我理解问题哪里理解错了吗》
还有这代码发出去就没按我的格式了,能排版吗,刚来的萌新。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.