C 青蛙過河 SDUT

2021-10-02 08:10:22 字數 1461 閱讀 9563

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

對每組輸入,輸出有一行,輸出最多能跳過的青蛙數目。

sample

input

0 21 2output3

6hint

#include

#include

intf

(int s,

int y)

intmain()

return0;

}

當有1個荷葉,零個石柱時,跳過2只;

當有2個荷葉,零個石柱時,跳過3只;

當有3個荷葉,零個石柱時,跳過4只;

所以當石柱為0時,跳過(y+1)*2^0只;

但當石柱為1,荷葉為1時,跳過4只,

但當石柱為1,荷葉為2時,跳過6只,

但當石柱為1,荷葉為3時,跳過8只,

所以當石柱為1,荷葉為任意數時跳過(y+1)*2^1;

再推當石柱為2,荷葉為1時,跳過8只;

當石柱為2,荷葉為2時,跳過12只;

當石柱為2,荷葉為3時,跳過16只;

當石柱為2,荷葉為4時,跳過20只;

所以當石柱為2,荷葉為任意數時跳過(y+1)*2^2;

所以推出跳過的青蛙數為(y+1)*2^s

所以寫成遞迴方程:return 2*f(s-1,y);

青蛙過河問題

青蛙過河是乙個非常有趣的智力遊戲,其大意如下 一條河之間有若干個石塊間隔,有兩隊青蛙在過河,每隊有3 只青蛙,如 圖 10 19所示。這些 青蛙只能向前移動,不能向後移動,且一次只能有乙隻青蛙向前移動。在移動過程中,育蛙可以向 前面的空位中移動,不可一次跳過兩個位置,但是可以跳過對方乙隻青蛙進入前面...

N 青蛙過河

description 1 一條小溪尺寸不大,青蛙可以從左岸跳到右岸,在左岸有一石柱l,石柱l面積只容得下乙隻青蛙落腳,同樣右岸也有一石柱r,石柱r面積也只容得下乙隻青蛙落腳。2 有一隊青蛙從小到大編號 1,2,n。3 初始時 青蛙只能趴在左岸的石頭 l 上,按編號乙個落乙個,小的落在大的上面 不允...

N 青蛙過河

description 1 一條小溪尺寸不大,青蛙可以從左岸跳到右岸,在左岸有一石柱l,石柱l面積只容得下乙隻青蛙落腳,同樣右岸也有一石柱r,石柱r面積也只容得下乙隻青蛙落腳。2 有一隊青蛙從小到大編號 1,2,n。3 初始時 青蛙只能趴在左岸的石頭 l 上,按編號乙個落乙個,小的落在大的上面 不允...