AC日記 - - - 4
阿新 • • 發佈:2018-01-12
clas 青蛙跳 urn n+1 sha 編號 brush log 面積
輸入數據有多組,每組占一行,每行包含2個數s(s是小溪中的石柱數目)、y(y是小溪中的荷葉數目)。(0 <= s <= 10,0 <= y <= 10),輸入文件直到EOF為止!
Problem Description
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 片荷葉的情況下,最多能跳過多少只青蛙?Input
Output
對每組輸入,輸出有一行,輸出最多能跳過的青蛙數目。Example Input
0 2 1 2
Example Output
3 6
#include <stdio.h> int XY(int m, int n) { if(m==0) return n+1; //只有N個荷葉,n個青蛙調到荷葉,一個青蛙跳到對岸。 else return 2*XY(m-1,n); // 1個石柱,y個荷葉,y+1個青蛙借助y個荷葉跳到石柱上, 再有y+1個借助荷葉跳到對岸,第一個y+1再借助荷葉跳到對岸 ,總共2*(y+1)個青蛙,m增加一個就翻一倍。 } int main() { int x, y; while(scanf("%d %d", &x, &y)!=EOF) { printf("%d\n",XY(x,y)); } }
AC日記 - - - 4