1. 程式人生 > >AC日記 - - - 4

AC日記 - - - 4

clas 青蛙跳 urn n+1 sha 編號 brush log 面積

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

輸入數據有多組,每組占一行,每行包含2個數s(s是小溪中的石柱數目)、y(y是小溪中的荷葉數目)。(0 <= s <= 10,0 <= y <= 10),輸入文件直到EOF為止!

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