3水杯倒水問題

2021-10-05 00:19:08 字數 949 閱讀 4717

問題:

給出三個杯子的容量abc , 其中剛開始時c杯是滿的,ab是空的。

現在在保證不會有漏水的情況下進行如下操作:

將乙個杯子x的水倒到另乙個杯子y中,如果x空了或者y滿了就停止(滿足其中乙個條件才停下)

現問c中水量有多少種可能性(a,b,c為非負整數)

解法1:數論,擴充套件歐幾里得

待補充解法2:模擬倒水過程,bfs列舉所有情況

只適用杯子容量不是很大的情況。

#include

#include

using

namespace std;

struct situation};

int volume[3]

, ans =0;

queue q;

bool visted[

105]

[105][

105]=;

bool c_vis[

105]=;

void

pour

(situation &s,

int f,

int d)

;int

main()

for(

int i=

0; i<

3; i++)}

}printf

("%d"

, ans)

;return0;

}void

pour

(situation &s,

int f,

int d)

else

situation temp = s;

temp.cup[f]

= ta;

temp.cup[d]

= tb;

q.push

(temp)

;return

;}

廣度優先搜尋 水杯倒水問題

三個水杯 時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入 第...

演算法題 水杯倒水的問題

本文將介紹以下內容 1.引言 上回 第八回 品味型別 值型別與引用型別 上 記憶體有理 的發布,受到大家的不少關注,我們從記憶體的角度了解了值型別和引用型別的所以然,留下的任務當然是如何應用型別的不同特點在系統設計 效能優化等方面發揮其作用。因此,本回是對上回有力的補充,同時應朋友的希望,我們盡力從...

演算法題 水杯倒水的問題

之前好像在看到這樣的題目 1.有3個容器,各是20公升,13公升,7公升,形狀不同也不透明。一開始20公升的容器裡面裝了20公升水,反正倒來倒去最後要讓20公升和13公升容器各裝了10公升水 2.2個外形不同的瓶子,各裝800毫公升水,另外還有1個300毫公升的杯子 現在有4個人,不限制喝的次數,想...