參見小白書130頁-131頁,關鍵是在狀態的儲存,一開始用l*100+m*10+s儲存每乙個狀態,l,m,s分別表示第乙個第二個第三個杯子所含的可樂的量,不能過,因為這樣的編碼有重複。
#include #include #include #include using namespace std;
const int n = 105;
typedef int state[3];
int l,m,s;
state queues[10500];
int vis[n][n][n];
int dis[n][n][n];
int fronts,rear;
void cal(int &l,int &m,int &s,int n)
else break;
case 1:
all = s - s;
if(all>l)
else break;
case 2:
all = l - l;
if(all>m)
else break;
case 3:
all = s - s;
if(all>m)
else break;
case 4:
all = l - l;
if(all>s)
else break;
case 5:
all = m - m;
if(all>s)
else break;
}}bool chack(state u)
int bfs()}}
return 0;
}int main()
return 0;
}
HDU 非常可樂 (BFS)
1495 非常可樂 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s...
《HDU 1495 非常可樂》的題解
大家一定覺得運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s s 101 毫公升...
hdu 1495 非常可樂
題意 給你三個容器讓你平分可樂,求最少的步數。思路 一看到求最少步數,就想到了廣搜,但是沒有思路,但看別人分情況,瞬間就明白啦。可以s n,s m,n s,n m,m s,m n這六種情況討論就行,每種又有倒完和倒不完兩種情況,直到出現兩個容器都有s 2,這就是最少步數。但s是奇數時是不能平分的,三...