三個容器的倒水問題

2021-10-01 02:05:54 字數 1159 閱讀 1812

/*問:有三個容器,容量是x、y、z,若要得到t體積的水,倒來倒去最少需要操作幾步?*/

/*測試用例:輸入3 5 8 4,輸出6*/

#include

#include

#include

#include

using namespace std;

//乙個儲存三個容器當前狀態的結構體,同時記錄步數

struct volumestate

;int step;

volumestate()

; step =0;

}};// 由第i個容器向第j個容器倒水,需要將第j個容器裝滿才可

void

pour

(int i,

int j, volumestate &s,

const array<

int,

4>

&volume)

//第i個容器全部倒出

else

}int

bfs(volumestate start,

int t,

const array<

int,

4>

&volume, vector>

>

&visited)}}

}return int_max;

}int

main()

;//需要有個表記錄已經遍歷過的情況,防止bfs死迴圈

vector>

>

visited

(x +

1, vector>

(y +

1, vector

(z +1,

0)))

;if(t == x || t == y || t == z)

int minstep = int_max;

//遍歷所有可能的初始情況

for(

int i =

1; i <=3;

++i)}}

if(minstep == int_max)

cout <<-1

<< endl;

else

cout << minstep << endl;

return0;

}

三個容器倒水 三個水桶等分8公升水的問題 演算法的樂趣

有三個容積分別為3公升 5公升 8公升的水桶,其中容積為8公升的水桶中裝滿了水,容積為3公升和容積為5公升的水桶都是空的。三個水桶都沒有刻度,現在需要將大水桶中的8公升水等分成兩份,每份都是4公升水,附加條件是只能這三個水桶,不能借助其他輔助容器。恩,是的,這是乙個很經典的問題。然而,我們並不能想全...

Color的三個問題

文 王煜全 什麼是color?新一代網路入口?從網際網路到移動網際網路,交流更為高效 內容愈加豐富 應用日益繁榮,這是本質的趨向。然而,使用者如何進入 access 網路,獲得並使用各種應用,這將成為關鍵問題。也就是說,網路應用入口會是在什麼地方?最初,yahoo式的瀏覽導航是入口 後來,以goog...

三個水杯問題

給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入 第一行乙個整數n 0v2 v3 v1 100 v3 0 表示三個水杯的體積。第二行給...