青蛙過河問題

2021-07-26 17:50:36 字數 1011 閱讀 3313

青蛙過河是乙個非常有趣的智力遊戲,其大意如下: 一條河之間有若干個石塊間隔,有兩隊青蛙在過河,每隊有3 只青蛙,如 圖 10-19所示。這些 青蛙只能向前移動,不能向後移動,且一次只能有乙隻青蛙向前移動。在移動過程中,育蛙可以向 前面的空位中移動,不可一次跳過兩個位置,但是可以跳過對方乙隻青蛙進入前面的乙個空位。問 兩隊青蛙該如何移動才能夠用最少的步數分別走向對岸?

先來分析一下青蛙過河問題。可以採用如下的方案來移動青蛙, 

(1)左側的青蛙向右跳過右側的乙隻青蛙,落入空位,執行第 

(2)右側的青蛙向左跳過左側的乙隻青蛙,落入空位,執行第 

(3)左側的青蛙向右移動一格,落入空位,執 行 第 (5 ) 步。

(4) 右側的青蛙向左移動一格,落入空位,執 行 第 (5 ) 步。 

(5) 判斷是否已將兩隊青蛙移動對岸,如果沒有則繼續從第(1 ) 步執行,否則結束程式。

我們可以按照這個思路來編寫相應的青蛙過河問題的求解演算法

c++示例**如下:

#include

#include

using namespace std;

void swap(int *a, int *b)

void show(int *flog)

cout << endl;

}void caculate(int *flog)

}for (int i = 0; ok && i < 6; i++)

}for (int i = 0; ok && i < 6; i++)

}for (int i = 0; ok && i < 6; i++)

}show(flog);}}

void main() ;

caculate(flog);

system("pause");}

執行結果如下:

青蛙過河問題

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

青蛙過河問題

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

N 青蛙過河

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