青蛙過河是乙個非常有趣的智力遊戲,其大意如下: 一條河之間有若干個石塊間隔,有兩隊青蛙在過河,每隊有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 上,按編號乙個落乙個,小的落在大的上面 不允...