hdu1495 非常可樂 bfs基礎

2021-07-29 06:03:13 字數 948 閱讀 8805

大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s (s<101)毫公升 (正好裝滿一瓶) ,它們三個之間可以相互倒可樂 (都是沒有刻度的,且 s==n+m,101>s>0,n>0,m>0) 。聰明的acmer你們說他們能平分嗎?如果能請輸出倒可樂的最少的次數,如果不能輸出"no"。

input三個整數 : s 可樂的體積 , n 和 m是兩個杯子的容量,以"0 0 0"結束。output如果能平分的話請輸出最少要倒的次數,否則輸出"no"。sample input

7 4 3

4 1 3

0 0 0

sample output
no
題意就不說了,久違的中文題

思路:剛剛接觸bfs不長時間,看到這道題時沒想到用bfs以為是數論推公式的題,後來看了題解之後恍然大悟,這道題中明確了初始狀態了目標狀態,並且資料量不大,所以可以一搜,然後就要確定一下搜尋的方向,本題中方向很好找 有六個方向 a->b a->c b->a b->c c->a c->b 然後進行bfs即可

ac**:

#include #include #include #include #include using namespace std;

int a[3];

bool vis[105][105];

struct node

;void bfs()

else

if(!vis[tem.w[1]][tem.w[2]])}}

}}

cout<<"no"<>a[0]>>a[1]>>a[2]&&a[0]!=0)

{if(a[0]%2!=0)

{cout<<"no"<

本人對搜尋還是太菜,還處於學習**階段!!!

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 毫公升...