NYOJ 三個水杯

2021-06-16 12:53:18 字數 1109 閱讀 6967

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:4

描述給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。

輸入第一行乙個整數n(0v2>v3 v1<100 v3>0)表示三個水杯的體積。

第二行給出三個整數e1 e2 e3 (體積小於等於相應水杯體積)表示我們需要的最終狀態

輸出每行輸出相應測試資料最少的倒水次數。如果達不到目標狀態輸出-1

樣例輸入

26 3 1

4 1 1

9 3 2

7 1 1

樣例輸出3-1

**經典題目

上傳者hzyqazasdf

廣搜:#include#include#includeusing namespace std;

bool ever[102][102][102];

struct state;

state start,cur,goal,cup,tmp;

int bfs()

} if(cur.x != 0 && cur.z < cup.z )

} if(cur.y != 0 && cur.x < cup.x )

} if(cur.y != 0 && cur.z < cup.z )

} if(cur.z != 0 && cur.y < cup.y )

} if(cur.z != 0 && cur.x < cup.x )

} }if(success)

return goal.step;

else return -1;

}int main(){

int t;

cin>>t;

while(t--){

cin>>cup.x>>cup.y>>cup.z;

cin>>goal.x>>goal.y>>goal.z;

start.x = cup.x;

start.y = 0;

start.z = 0;

start.step = 0;

cout<

NYOJ 三個水杯

題目 這道題做了三天,內心是痛苦的。幾次想到放棄,但是又不忍心現有的成果,又不想借鑑別人的 我相信我可以。就堅持下來了。最後也通過了。做這道題的感想就是流淚並快樂著。或許這也就是acmer的樂趣吧。這道題收穫是巨大的。過後看網上說就是佇列 搜尋。我感覺則不然。我認為他是搜尋 半個動態規劃。為什麼這麼...

NYOJ 搜尋 三個水杯

這道題是個廣度搜尋,借用佇列實現的。對搜尋還是處於入門的階段,所以也是看了別人的分析才能寫出來 所以貼出來與大家共勉 參考文章 首先,是畫了一張圖如下所示 步驟分析 比如從第一列測試資料出發 6,3,1和4,1,1 第 一 讓6,0,0先進來,然後對其進行倒水開始。此時只有第乙個被子有水 0不等於0...

nyoj 三個水杯 BFS

解題思路 有三種容量的杯子 v1,v2,v3 記錄每乙個杯子裡水的體積為 s1,s2,s3 每乙個杯子的剩餘容量為水杯裡的水在相互傾倒的時候會有以下的兩種情況 1 乙個杯子a所剩的容量 大小為va sa 比水杯b要倒過來的水 大小為sb 大的時候可以將b裡的水全部倒到a中,最終a中水的體積為sa s...