BFS實現ABC水杯倒水問題

2021-10-03 12:14:32 字數 1147 閱讀 9330

倒水問題

「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種情況,煩是真的...