1.這個題要求的是輸出最小水量。bfs的佇列實現就是用乙個量來衡量兩個狀態的先後順序,然後根據這個先後順序來決定先遍歷哪個狀態。在這裡,需要定義乙個dist來代表到這個狀態的最小水量,然後過載運算子,最小水量越少,這個狀態優先順序越高。如果定義步數,則會找到最小步數,這個是bfs的特點決定的。
即,bfs能找到目標狀態的某乙個最小量。如果狀態用結構體表示的話,這個最小量可以用乙個函式過載來定義。
2.小技巧,先更新ans,然後再用ans來判斷是否找到目標狀態。
3.ans[d] 下標表示某乙個杯子可以出現這個水量,值表示到達這個水量的最小過程水量。
4.照常vis[i][j]剪枝
複習一遍bfs板子
1.判斷是否結束
2.進行下一步遍歷
a.判斷子狀態是否符合要求(越界,已經view過)
b.將子狀態的view賦1
c.子狀態push
#include
#include
#include
#include
using namespace std;
struct node};
int ans[
205]
;void
update
(node u)
}void
bfs(
int a,
int b,
int c,
int d)
;// printf("%d %d %d\n",cap[0],cap[1],cap[2]);
memset
(vis,0,
sizeof
(vis));
memset
(ans,-1
,sizeof
(ans));
priority_queue q;
node first;
first.dist=0;
first.v[0]
=0;first.v[1]
=0;first.v[2]
=c; q.
push
(first)
;while
(!q.
empty()
)}}}
while
(d>=0)
d--;}
}int
main
(void
)return0;
}
演算法競賽入門經典 劉汝佳 第七章暴力
0 1 增量構造法 include include include include using namespace std int n,t 100 ans 100 void solve int cur,int tpre int main return 0 2 位向量法vis i 1表示選中t i 這...
學習劉汝佳第七天
tex中的引號 if c wertyu wertyu,uva10082 1.定義乙個字元陣列s,用於儲存鍵盤所有非空白字元。2.while c getchar eof 3.在while和for裡面分別對不同的輸入字串和常量字串判斷結尾。4.for是空語句,跳出迴圈有兩種情況,分別是s i 為假和s ...
劉汝佳第五章 UVa 12096
include include include include include include includeusing namespace std define ins x inserter x,x.begin define all x x.begin x.end typedef setset m...