倒水問題BFS

2021-10-08 13:14:53 字數 1134 閱讀 6895

傳送門.

題意兩個杯子容量為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種情況,煩是真的煩。

直接看**

#include 

#include

#include

#include

#include

#include

#define t int t;

scanf

("%d"

,&t)

;while

(t--

)#define ll long long

using namespace std;

string path=

;struct nodes[

110]

[110];

int vis[

500]

[500];

int main()

);int flag =0;

while

(!q.

empty()

) flag =1;

break;}

if(old.x1 != a)

// cout<<0<}

if(old.x2 != b)

// cout<<1<}

if(old.x1 !=0)

// cout<<2<}

if(old.x2 !=0)

// cout<<3<}

if(old.x1 !=

0&& old.x2 != b)

// cout<<4<}

if(old.x1 != a && old.x2 !=0)

// cout<<5<}}if

(!flag) cout<<

"impossible"

}

倒水問題 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求解倒水問題

倒水問題 fill a表示倒滿a杯empty a表示倒空a杯,pour a b表示把a的水倒到b杯並且把b杯倒滿或a倒空。input 輸入包含多組資料。每組資料輸入 a,b,c 資料範圍 0 a b c b 1000 a和b互質。output 你的程式的輸出將由一系列的指令組成。這些輸出行將導致任何...

poj 3414 倒水問題 bfs

思路 就是bfs,有六種操作,fill 1或2,drop 1或2 將1倒到2,將2倒到1。要注意的是要使用標記陣列vis i j 表示左邊的杯子為i公升,右邊的杯子為j公升,如果已被標記說明之前已經出現這種情況,就不要入隊。從 0,0 開始bfs。因為題目中需要輸出如何倒,那麼就需要儲存路徑。以前似...