今天還是刷搜尋題,做dfs的題還是漏洞百出,除了練習關於dfs的題之外,還複習了廣度優先搜尋bfs,其實廣度優先搜尋的核心思想是:從初始節點開始,應用算符生成第一層節點,檢查目標節點是否在這些後繼結點中,若沒有,再用產生式規則將所有第一層節點逐一擴充套件,得到第二層節點,並逐一檢查第二層節點中是否包含目標節點,若沒有,再用算符逐一擴充套件到第二層的所有節點......如此依次拓展檢查下去,直至發現目標節點位置。廣度優先演算法一般用佇列來實現。
如果目標節點的深度與「費用」(如路徑長度)成正比,那麼找到第乙個解即為最優解,這是,搜尋速度比dfs更快,再求最優解時一般採用bfs。
下面附上我今天練習的bfs例題:
eg1.最短路線(課本p303)
#include
#include
using namespace std;
int map[9][9]=,//將地圖儲存進去,,
,,,,
,};//0表示能走,1表示不能走
int a[101],b[101];//a[k]表示經過k城市,b[k]記錄k城市的前趨城市(前乙個城市)
bool s[9];//s[i]用來判斷第i個城市是否走過
int out(int d)
;int w[5]=;
int n,m,i,j,desx,desy,soux,souy,head,tail,x,y,a[51],b[51],pre[51],map[51][51];
bool f;
int print(int d)}}
if(f) break;
}if(!f) cout<
還有希望明天的練習賽不會輸的那麼慘...
2017 8 2暑假集訓第三天
今天仍舊在做搜尋題 本來想著今天把昨天比賽的de題先做做來著 結果做了做搜尋就沒有停下來 明天再做de題吧!搜尋做得也差不多了 剩下的就是圖論了,有點困難啊 比搜尋還困難 畢竟沒怎麼練過 今天做了a了五個題,8.9.10.11.13 第8題還好,素數轉換的題,畢竟是課件上的原題 還是比較容易的 第1...
集訓第三天,打卡
今天訓練賽自己價效比搞了個k題,相對較水,也算做了點貢獻吧。有一條概率dp,戴老闆秒切,膜啊,覺得不錯,所以寫了來。題意是乙個棋盤,在上面隨機放旗子,問所有的列和行上至少有乙個棋子的期望是多少。顯然的概率dp,dp i j k 表示放了i個棋子,覆蓋了j行,k列的概率。當前狀態都可以由放i 1個棋子...
刷題第三天
今天被p老師看見刷b站了,下午想到了乙個還不錯的idea,做做調研看看會不會被reject掉,今天真的好懶惰,今天可能不做太多太難的題了,明天還要起大早上英語課,我真的是好煩喲,我真的不想做題啊啊啊啊 這道題沒啥可說的,各種方法都能解決,但是我彷彿記得我多年前面測試的時候被問過一次,反轉單鏈表,反正...