問題:
給出三個杯子的容量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個人,不限制喝的次數,想...