題意:
要求將一瓶可樂平均分成份,問能否平均分成兩份,如果能輸出最少需要幾次否則輸出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 ...