HDU 1495 非常可樂(BFS)

2021-08-14 02:00:07 字數 740 閱讀 1075

思路:

bfs。倒水共有6中情況既(a->b,a->c),(b->a,b->c),(c->a,c->b),我們可以寫乙個雙重迴圈來模擬這六種情況(當然你也可以把這六種情況一一寫出來)。當 i -> j,i給j倒水的時候有兩種情況,① i 可以把 j 給裝滿 ② i 裝不滿 j 。兩種情況不一樣記得判斷一下即可。標記陣列開為3維,每乙個維度表示乙個杯子。

注意:結束條件為

嚴格的有兩個杯子中有s/2的水(比如對於樣例二,2 1 1不算結束,必須的2 0 2才可以),且判斷條件不能寫成s/2,因為7/3 == 2會出錯。

#includeusing namespace std;

int s[5];

struct node

now, next;

bool vis[105][105][105];

int bfs()

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

else

next.step = now.step + 1;

if (!vis[next.cup[0]][next.cup[1]][next.cup[2]])}}

}}

return -1;

}int main()

return 0;}/*

7 4 3

4 1 3

0 0 0

*/

hdu 1495 非常可樂 bfs

題目 剛開始那做這個題 怎麼也想不出為什麼可以用bfs 我認為做這個題目 你想到有6種情況哦 假設s 是瓶子 n,m 是有容量的杯子,s可以倒入n中 s也可以倒入m中 n可以倒入s中 n 也可以倒入m中 m也是一樣的哦 所以就有六種情況哦。下面看具體ac 裡面有註解哦 include include...

HDU 1495 非常可樂 (BFS)

problem description 大 家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這 一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m...

hdu 1495 非常可樂 bfs

大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s s 101 毫公升...