三個杯子,s, a, b分別代表它們的容量,s=a+b, 先給s這個杯子倒滿水,a,b不倒水, 要求是利用三個杯子平分s裡邊的水,問如果可以求倒水的次數(三個杯子可以互相倒水)
還是用bfs來做,三個杯子有6種倒法,難點就在於,如何倒水,以及最後判斷是否平分,看了乙個大神的做法,他是用陣列的下標0,1,2來表示三個杯子,用它的值來表示杯子裡的水量,這樣只操作下標就可以操作杯子,具體看**。
# include
# include
# include
using
namespace
std;
#define max 105
struct node
;int full[3];//設定容器的容量
int dir[6][2] = , , , , , };
int v[max][max][max] = ;//標記陣列,判斷是否重複
void turn(int &a, int &b, int fullb)//將a的水倒入b
else
}int pan(node s)//因為三個杯子互相倒,任意兩個杯子都有可能存放一半的水
int bfs(node s)}}
return -1;
}int main(void)
return
0;}
M 非常可樂
大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s s 101 毫公升...
1017 非常可樂
problem description 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫...
1017 非常可樂
題意 要求將一瓶可樂平均分成份,問能否平均分成兩份,如果能輸出最少需要幾次否則輸出no題目給出三個整數 s n m s表示可樂總量 n m分別為兩個杯子的容量 且 s n m 思路 先將m,n按大小排序 小的設為m 由 s 0 0 狀態 轉換到 0 s 2 s 2 的狀態且要找出最優解,用bfs 題...