BFS HDU 1495 非常可樂

2021-08-01 08:15:33 字數 925 閱讀 6023

problem description

給你一瓶s體積的可樂,n和m容量的杯子,他們可以互相倒,問你能不能平分這瓶可樂,能的話,輸出需要倒多少次,不能的話,輸出no.

**: 就是情況多了點而已

#include

using

namespace

std;

struct node

;queue

q;int s, n, m;

int vis[105][105];

void bfs()

);//最開始的情況,入佇列

vis[0][0] = 1;//只需要標記後兩個的體積即可

while(!q.empty())

for(i = 0; i < 6; i++)//分為六種情況);}

}else

//不能倒滿b);}

}}

if(i == 1 && c != m)//a倒入c);}

}else

//不能倒滿c);}

}}

if(i == 2 && a != s)//b倒入a);}

}}

if(i == 3 && c != m)//b倒入c);}

}else

//不能倒滿);}

}}

if(i == 4 && a != s)//c倒入a);}

}}

if(i == 5 && b != n)//c倒入b);}

}else

//不能倒滿);}

}}}}

printf("no\n");//不能平分

}int main()

return

0;}

1495 非常可樂

看題目時萬萬沒想到是bfs 不過這種尋找最少次數的問題確實除了bfs也想不到其他辦法了orz problem description 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要...

hdu 1495 非常可樂

題意 給你三個容器讓你平分可樂,求最少的步數。思路 一看到求最少步數,就想到了廣搜,但是沒有思路,但看別人分情況,瞬間就明白啦。可以s n,s m,n s,n m,m s,m n這六種情況討論就行,每種又有倒完和倒不完兩種情況,直到出現兩個容器都有s 2,這就是最少步數。但s是奇數時是不能平分的,三...

hdu 1495 非常可樂

hdu 1495 非常可樂 題目大意 給你三個容器,他們的容量分別是 s,n,m 且s n m,給你s,n,m。s代表裝在容器裡可樂,n和m代表的是兩個杯子的容量,求他們能否平分這杯可樂。如果能就輸出倒的最小次數,如果不能就輸出 no。題目分析 也就是要達到能 s 2,0,s 2或 0 s 2,s ...