青蛙過河問題

2021-08-14 10:51:47 字數 982 閱讀 9639

一條小溪尺寸不大,青蛙可以從左岸跳到右岸,在左岸有一石柱l,面積只容得下乙隻青蛙落腳,同樣右岸也有一石柱r,面積也只容得下乙隻青蛙落腳。有一隊青蛙從尺寸上乙個比乙個小。我們將青蛙從小到大,用1,2,…,n編號。規定初始時這隊青蛙只能趴在左岸的石頭l上,按編號乙個落乙個,小的落在大的上面。不允許大的在小的上面。在小溪中有s個石柱,有y片荷葉,規定溪中的柱子上允許乙隻青蛙落腳,如有多隻同樣要求按編號乙個落乙個,大的在下,小的在上,而且必須編號相鄰。對於荷葉只允許乙隻青蛙落腳,不允許多隻在其上。對於右岸的石柱r,與左岸的石柱l一樣允許多個青蛙落腳,但須乙個落乙個,小的在上,大的在下,且編號相鄰。當青蛙從左岸的l上跳走後就不允許再跳回來;同樣,從左岸l上跳至右岸r,或從溪中荷葉或溪中石柱跳至右岸r上的青蛙也不允許再離開。問在已知溪中有s根石柱和y片荷葉的情況下,最多能跳過多少只青蛙?

為什麼要寫這道題呢?因為自以為是導致亂寫程式,以為和漢諾塔一樣,只要有三根柱子就能移動無限的青蛙,其實不然,漢諾塔不能實現,每一次柱子上的盤子都是按序號排的,比如移動乙個n層的盤子,需要將n-1個盤子移動到中介柱子,將最大的盤子放到目的柱子,以初始柱子為中介,將中介柱子的n-1個盤子移動到目的柱子,但是,加入初始柱子有n+1個盤子,此時操作不符合編號相鄰的原則,大意了。

然後,從這道題講,先假設柱子數為s,荷葉數為l。

顯然 s = 0 時,可過青蛙數為l+1。

若 s = 1, l = 1,將柱子 s1 當做 s = 0 時的r柱子,則s1上可有2個青蛙,此時r上亦是如此,可以得到兩隻大青蛙,再將s1看做l則可以在r上增加兩個青蛙!

彷彿找到了關係, 假設函式為f,返回青蛙數, 則 f ( s, 1) = 2 * f ( s - 1, 1)

若l = 0, 上述關係顯然成立。

若s = 1, l >= 2, 可得到 (l+1)* 2 個!

若柱子增加呢, 實際上,就是先將 f ( s - 1, l)個放到 sn柱子上, 在將 f ( s - 1, l)放到r上,在以sn柱子為l,放到r上, 一共 2 * f ( s - 1, l)!

青蛙過河問題

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

青蛙過河問題

青蛙過河問題 一條小溪尺寸不大,青蛙可以從左岸跳到右岸,在左岸有一石柱l,面積只容得下乙隻青蛙落腳,同樣右岸也有一石柱r,面積也只容得下乙隻青蛙落腳。有一隊青蛙從尺寸上乙個比乙個小。我們將青蛙從小到大,用1,2,n編號。規定初始時這隊青蛙只能趴在左岸的石頭l上,按編號乙個落乙個,小的落在大的上面。不...

N 青蛙過河

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