倒水問題
「fill a」 表示倒滿a杯,"empty a"表示倒空a杯,「pour a b」 表示把a的水倒到b杯並且把b杯倒滿或a倒空。
簡單滴分析一下該題,首先由3個容器,我們能得到的水的體積無非是abc三個數之間的運算,我們不妨將杯子容積設為x,y,因為c是目標體積,所以不做變數,那麼就會有6種情況,每種情況下對應狀況,我們就把操作記錄下來。
照例把測試資料粘出來。
其實吧,我覺得**還是有點bug,但是vj過了,emmmm,大家康康吧,順便有錯幫我指正出來^^
然後就是 你也可以這樣理解μa+ λb=c, μ和 λ都是整數,可正可負,無非就是已知abc,求 μ 和λ的整數解,可能答案不唯一,我在想用幾何圖形可不可以解決,不過呢,我好像不會,emmmm
#include
#include
#include
#include
using
namespace std;
struct cup};
string str[6]
=;queue q;
map from;
void
refresh
(cup &s,cup &t)
}//void print()
void
output
(cup &cu)
void
bfs(
int a,
int b,
int c)
if(now.x>0)
if(now.y>0)
if(now.x
else}}
if(now.y
else}}
}}intmain()
bfs(a,b,c);}
return0;
}
今天不知道怎麼肥四,**不能整體貼上上來,只好一段一段地粘了。 3水杯倒水問題
問題 給出三個杯子的容量abc 其中剛開始時c杯是滿的,ab是空的。現在在保證不會有漏水的情況下進行如下操作 將乙個杯子x的水倒到另乙個杯子y中,如果x空了或者y滿了就停止 滿足其中乙個條件才停下 現問c中水量有多少種可能性 a,b,c為非負整數 解法1 數論,擴充套件歐幾里得 待補充解法2 模擬倒...
倒水問題 bfs
題目 倒水問題 fill a 表示倒滿a杯,empty a 表示倒空a杯,pour a b 表示把a的水倒到b杯並且把b杯倒滿或a倒空。輸入 輸入包含多組資料。每組資料輸入 a,b,c,資料範圍 0 a b c b 1000 a和b互質。輸出 你的程式的輸出將由一系列的指令組成。這些輸出行將導致任何...
倒水問題BFS
傳送門.題意兩個杯子容量為a,b,有6個操作 fill 1 裝滿a fill 2 裝滿b drop 1 倒掉a drop 2 倒掉b pour 1,2 a倒給b,到b滿為止 pour 2,1 b倒給a,到a滿為止 問最少多少次能有其中乙個杯子裡面有c公升水。輸出相應操作。bfs搜尋6種情況,煩是真的...