幅優先検索と深さ優先検索の骨格
深さ優先検索:再帰関数で深くまで。
関数1開始→関数1−1開始→関数1−1終了→関数1終了
なので、スタックと同じ.
void dfs(int x, int y) { //...の条件のとき再帰せず、終了。 if(...) {...} //..の条件のとき再帰せず、終了。 if(..) {..} //再帰関数で、さらに深く上っていく。 if(!!!) {dfs(x+1, y)} }
2011.04.07追記
スタックのいいところは、履歴を簡単に作れるところ.
幅優先検索:キューでほふく前進
int i; void bfs(int x, int y) { //初期化 int i = 0; //ループ while(que.size()) { //キューの先頭を取り出す。 int v = que.front(); que.pop(); //当てはまれば終了 { if(..) {break;} //継続するなら、キューに入れて進む。 que.push(..); i++; } }