hdu 1495 非常可樂(BFS)

2021-08-14 20:22:01 字數 1243 閱讀 2095

題意:三個杯子,一開始只有第乙個杯子有水(滿的)。判斷是否能通過互相倒水,倒出平分的情況,輸出最小步數,或者no

題解:bfs6種倒水情況即可。詳情看**注釋。

#include#include#include#include#includeusing namespace std;

const int maxn = 101;

struct node;

queueq;

int book[maxn][maxn][maxn]; // 標記陣列

int a,b,c,aim;

int check(int x,int y,int z)//平分條件

void bfs()

for(int i = 1 ; i <= 6 ; i ++)

else

next.z = now.z;

if(!book[next.x][next.y][next.z])

}if(i == 2)

else

next.y = now.y;

if(!book[next.x][next.y][next.z])

}if(i == 3)

else

next.z = now.z;

if(!book[next.x][next.y][next.z])

}if(i == 4)

else

next.x = now.x;

if(!book[next.x][next.y][next.z])

}if(i == 5)

else

next.y = now.y;

if(!book[next.x][next.y][next.z])

}if(i == 6)

else

next.x = now.x;

if(!book[next.x][next.y][next.z])

}} }

cout << "no" << endl;

}int main(){

while(cin >> a >> b >> c){

if(a == 0 && b == 0 && c== 0) break;

memset(book,0,sizeof(book)); // 清空很重要

while(!q.empty())

q.pop();

if(a%2 == 1) { // 若為奇數肯定不可能平分

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