劉汝佳第七章UVA 10603

2021-09-07 06:13:46 字數 1236 閱讀 9447

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...