2016-09-05から1日間の記事一覧
問題 問題概要 連結成分の数. 解法 dfsで連結成分の数を求めればいい. ミス なし. コード #include <iostream> using namespace std; typedef long long ll; #define rep(i,n) for(int i=0;i<(n);i++) int dy[] = {1, 0, 0, -1}; int dx[] = {0, 1, -1, 0}; bool used[</iostream>…
問題 問題概要 スタートからゴールまでたどり着けるか。 解法 dfsで、スタートからゴールまでdfsでたどり着けるかやった。usedを使い、一度巡ったところをdfsしないようにしないと、オーバーフローで落ちた。 ミス なんか始めバグってた。でもなんか治った。…
問題 問題概要 nこの数字を使って、合計sにするパターンの総数 解法 dfsで周り4方向と連結した部分を塗りつぶしていく。連結成分を塗り終わると、dfsが終わる。次に、まだ塗り終わっていない場所からdfsを始めて、塗りつぶしていく。これを何回繰り返したか…
問題 問題概要 nこの数字を使って、合計sにするパターンの総数 解法 dfsで解いた。dfs(n, s, now) = (n := 残りの選択する数字の数 s := 残りの合計 now := 現在選択可能な数字) を要素として持ち、再帰関数を書けばいい。 ミス 教育的 コード #include <iostream> #in</iostream>…
問題 問題概要 与えられた数字を2つに分けて、共に、数字が昇順になるようにできるか。 解法 dfsで解いた。dfs(B, C, cnt) := (B:=Bの一番上の数 C:=Cの一番上の数 cnt:=何個目の数字か)を要素として持ち、再帰関数を書けばいい。 ミス シンプルなdfs コード…