遞推遞迴練習N青蛙過河

2021-07-29 20:24:00 字數 1331 閱讀 8071

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 2

sample output

3
這道題相當於漢諾塔公升級,需要找規律,設定乙個jump(s,y)表示做多過河的青蛙個數,

,s是石柱數,y是荷葉數,當s=0,y=1時,可以過兩隻青蛙,s=0,y=2時可以過3只青蛙,所以jump(0,y)=y+1,當s=1,y=1時可以過4只青蛙,所以對於s=1,y大於1時可以通過2*(y+1)只青蛙,

對於s=2,y大於1時可以通過4*(y+1)只青蛙,所以可以得到遞推公式jump(s,y)=2*jump(s-1,y)。下面是我的ac**:

#include

usingnamespacestd;

intjump(

int r,

int z)

intmain()

return0

;}usingnamespacestd;

intjump(

int r,

int z)

intmain()

return0

;}

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