遞迴之青蛙過河

2021-08-17 09:54:35 字數 2108 閱讀 8858

青蛙過河

time limit: 1000 ms memory limit: 65536 kib

submit statistic discuss

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

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

sample input

0 2

1 2sample output3 6

hint

source

zlh

#include

#include

#include

int jump(int

s,int

y);int main()

return0;}

int jump(int

s,int

y) return t;

}

think:

這裡我們先給出分析結果,再給出分析過程。經過分析我們可以得出的結論是:每增加一片荷葉,那麼可以跳過的青蛙數加一;每增加乙個石柱,可以跳過的青蛙數是原來的兩倍。那麼為什麼是這個結果呢?下面我們一步步分析。

1.首先考慮沒有石柱的情況,即s=0。

(1)當y=0時,只能跳過乙隻青蛙,由l直接跳到r。

(2)當y=1時,可以跳過兩隻青蛙。過程為:青蛙1從l跳到荷葉上,青蛙2從l直接跳到r,最後青蛙1從荷葉跳到r。

(3)當y=2時,可以跳過3只青蛙。過程為:青蛙1從l跳到荷葉1,青蛙2從l跳到荷葉2,青蛙3從l跳到r,青蛙2從荷葉2跳到r,青蛙1從荷葉1跳到r。

由上面的例子我們可以看出,當只考慮荷葉時,每增加一片荷葉,跳過的青蛙數加一,即青蛙數為y+1。

2.再考慮增加石柱的情況。

(1)當s=1,y=0時,可以跳過兩隻青蛙。過程為:青蛙1從l跳到石柱上,青蛙2從l跳到r,青蛙1從石柱跳到r。

(2)當s=1,y=1時,可以跳過4只青蛙。過稱為:青蛙1從l跳到荷葉上,青蛙2從l跳到石柱上,青蛙1從荷葉上跳到石柱上,青蛙3從l跳到荷葉上,青蛙4從l跳到r,青蛙3從荷葉上跳到r,青蛙1從石柱上跳到荷葉上,青蛙2從石柱上跳到r,青蛙1從荷葉跳到r。

上述過程可以總結為3步:步驟1:青蛙1和青蛙2借助荷葉跳到石柱上;步驟2:青蛙3和青蛙4借助荷葉跳到r;步驟3:青蛙1和青蛙2借助荷葉由石柱跳到r。

(3)當s=1,y為任意值時,可以跳過2 * (y+1)只青蛙。過程可以理解為3步:步驟1:前y+1只青蛙借助荷葉跳到石柱上;步驟2:後y+1只青蛙借助荷葉跳到r;步驟3:前y+1只青蛙借助荷葉由石柱跳到r。

(4)當s=2,y為任意值時,可以跳過4 * (y+1)只青蛙。顯然當s=1時,y為相同值時可以跳過2 * (y+1)只青蛙。那麼這個過程可以理解為:步驟1:前2 * (y+1)只青蛙利用荷葉和其中乙個石柱(這裡設為s1)從l跳到另外一根石柱(s2)上;步驟2:後2 * (y+1)只青蛙借助荷葉和s1從l跳到r;步驟3:前2 * (y+1)只青蛙從s2借助荷葉和s1跳到r

這裡補充一下為什麼是2*jump(s-1,y),假設有s根柱子,那麼把最後一根看做是類似與r,這時候就要看s-1根柱子的時候是多少只青蛙,最後到真正的終點的時候就乘2即可,舉個例子,當有一根柱子的時候就要看沒有柱子時候有多少只青蛙,然後按照上面的原理乘2即可

遞推遞迴練習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 上,按編號乙個落乙個,小的落在大的上面 不允...

遞推遞迴練習N青蛙過河

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