M 非常可樂

2021-07-28 01:16:12 字數 795 閱讀 3696

三個杯子,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 題...