トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2004db

Problem B: Red and Black 赤と黒

赤いタイルと黒いタイルが強いてある部屋で、隣接している黒いタイルだけ移動できる。このとき、最初の位置から移動できるタイルの枚数を数える問題。

入力

  • まず部屋の大きさW(横)とH(縦)。2つとも0だったら終了する。
  • 続いて文字の入力。.(ドット)が黒いタイル(移動できる場所)、#が赤いタイル(移動できない場所)、@が最初の位置を表す。

出力

  • 最初の位置から到達可能なタイルの数を表示。

データ構造

2次元配列で部屋を表現する。文字2次元配列でも解けると思うが、整数型にしてしまったほうが考えやすいかも。黒いタイルを0、赤いタイルを1などとして。

解答例

  • 方法1:再帰でバックトラックのやり方が分かれば、解けるかな。
  • 方法2:再帰を使わなくても作れる。部屋の広さが大きいときは時間がかかるかも。