HDU1495 非常可樂 倒水問題 BFS

2021-08-17 10:15:40 字數 981 閱讀 1288

由於沒有刻度,所以只能是倒完或者說是將所倒的那個容器倒滿,所以說得分6種情況考慮,每種情況還要再細分兩種情況考慮。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std

;typedef unsigned long long ull;

int s,n,m;

struct node

first;

bool book[101][101][101];

int bfs()

else

if(!book[v.s][v.n][v.m])

}//s-->m;

if(t.s&&m-t.m>0)

else

if(!book[v.s][v.n][v.m])

}//n-->s

if(t.n&&s-t.s>0)

else

if(!book[v.s][v.n][v.m])

}//n-->m

if(t.n&&m-t.m>0)

else

if(!book[v.s][v.n][v.m])

}//m-->s

if(t.m&&(s-t.s>0))

else

if(!book[v.s][v.n][v.m])

}//m-->n

if(t.m&&n-t.n>0)

else

if(!book[v.s][v.n][v.m])}}

return -1;}

int main()

return 0

;}

HDU 1495 非常可樂(倒水問題)

分析這道題屬於倒水問題,分為兩種情況,乙個杯子倒滿或者乙個杯子倒空,用優先佇列儲存各種狀態,按照操作次數從小到大排 小的先出佇列 用bfs求最少的操作次數,我參考的是劉汝佳的 倒水問題 與這道題思想一致,結束條件不同而已。include include include includeusing na...

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 ...