1017 非常可樂

2021-07-11 09:07:02 字數 1179 閱讀 5069

題意:

要求將一瓶可樂平均分成份,問能否平均分成兩份,如果能輸出最少需要幾次否則輸出no題目給出三個整數 s n m s表示可樂總量 n m分別為兩個杯子的容量 且 s= n + m

思路:

先將m,n按大小排序 小的設為m;由 s 0 0 狀態 轉換到 0 s/2 s/2 的狀態且要找出最優解,用bfs;題目只有6種狀態轉換方式:s-m,s-n,n-s,n-m,m-s,m-n,建立一格六叉數的模型進行遍歷。用結構體記錄步數 步數為彈出隊頭元素的步數+1 遍歷完成條件為 找到乙個方法能夠平分或者遍歷所有可能情況仍然無法找到

上課講過了 不是很難 **很長 但大部分都重複了 複製貼上就行。

//#include "stdafx.h"

#include

#include

#include

#include

#include

#include

using namespace std

;#define maxn 101

bool visited[maxn][maxn];

int m, n, s, si, sj;

struct node

;void bfs()

if (p.all + p.x>m)

else

if (p.all + p.y>n)

else

if (p.x + p.y>n)

else

q.all = p.all + p.x, q.x = 0, q.y = p.y, q.t = p.t + 1

; if (!visited[q.x][q.y])

que.push(q), visited[q.x][q.y] = true;

if (p.x + p.y > m)

else

q.all = p.all + p.y, q.x = p.x, q.y = 0, q.t = p.t + 1

; if (!visited[q.x][q.y])

que.push(q), visited[q.x][q.y] = true;

}cout<<"no"

<;

}int main()

if (m > n) swap(m, n);

bfs();

}return 0;}

1017 非常可樂

problem description 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫...

1017 非常可樂

1017 非常可樂 題意 有體積為s的一瓶可樂,和體積為m,n的兩個杯子,他們都沒有刻度,求將可樂平分最少倒多少次。思路 三個杯子倒可樂,共有六種情況,s n,s m,m s,m n,n s,n m,判斷每種可能的情況,新增到佇列中,逐一搜尋。感想 直接對所有可能的情況搜尋,思路並不複雜。inclu...

練習二 1017 非常可樂

題目 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s s 101 ...