傳送門.
題意兩個杯子容量為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。因為題目中需要輸出如何倒,那麼就需要儲存路徑。以前似...