NYOJ 搜尋 三個水杯

2021-06-21 21:47:44 字數 1110 閱讀 8918

這道題是個廣度搜尋,借用佇列實現的。對搜尋還是處於入門的階段,所以也是看了別人的分析才能寫出來**,所以貼出來與大家共勉~

參考文章:

首先,是畫了一張圖如下所示:

步驟分析:(比如從第一列測試資料出發:6,3,1和4,1,1)

一、讓6,0,0先進來,然後對其進行倒水開始。此時只有第乙個被子有水(!=0不等於0),讓這個狀態進佇列。

二、然後讓第二層的進佇列判斷。

三、依次往後,直到全部遍歷完成或者是遇到第一次達到4,1,1為止。

#include #include #include using namespace std;

#define m 100

bool visit[m][m][m];

int v1,v2,v3,e1,e2,e3;

struct cup

start_v,end_v;

bool achieve(cup current)

} return true;

}bool del(cup &now,int start,int end) //start杯子向end杯子倒水

} return false;

}int bfs()

for(i=0;i<3;i++)

}}

} return -1;

}int main()

{ int n;

cin>>n;

while(n--)

{ cin>>v1>>v2>>v3;

cin>>e1>>e2>>e3;

start_v.volume[0]=v1;start_v.volume[1]=v2;start_v.volume[2]=v3;

end_v.volume[0]=e1;end_v.volume[1]=e2;end_v.volume[2]=e3;

cout<

NYOJ 三個水杯

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入第一行乙個整數n...

NYOJ 三個水杯

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

三個水杯 搜尋

時間限制 1 sec 記憶體限制 64 mb 提交 狀態 討論版 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。第一行乙個整數n 0 接...