問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
グリッドが与えられるので、マス (y,x) から次の操作を 1 回としたとき、N 回以内に到達することができるマスを '*' , それ以外のマスを '.' にしたグリッドを出力してください。
・現在いるマスを (y,x) としたとき、(y+1,x), (y-1,x), (y,x+1), (y,x-1) のいずれかのマスに移動する。
ただし、グリッドの外へは移動することができず、また、グリッド上の '#' のマスは壁であり、移動できないことに注意してください。
なお、グリッドの左上・右上・左下・右下のマスをそれぞれ (0,0), (0,W-1), (H-1,0), (H-1,W-1) とします。
--- ヒント ---
基本的な移動の仕組みは 1 つ前の問題の「N マスの移動」で扱った幅優先探索と同じなので、そのコードに
「移動先が壁でない場合にのみ移動を行う」という条件判定を加えましょう。
H W N
y x
S_1
...
S_H
H 行の出力
・マス (y,x) から前後左右に N マス移動して到達することができるマスを '*' , それ以外のマスを '.' にしたグリッドを出力してください。
・各行の要素を繋げて文字列としたものを改行区切りで出力してください。
・詳しくは入力例を参考にしてください。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ H, W ≦ 10
・0 ≦ N ≦ 10
・0 ≦ y < H
・0 ≦ x < W
・ S_i は W 文字の文字列(1 ≦ i ≦ H)
・ S_i の各文字は '.' または '#'(1 ≦ i ≦ H)
・マス (y,x) の文字は '.'
7 10 9
5 2
#...#.....
.###...#.#
#..#....##
.#.###..##
##.....###
##.##....#
#..#.##..#
#...#.*...
.###.**#.#
#**#****##
.#*###**##
##*****###
##*##****#
#**#.##**#
9 6 8
5 0
....##
.#.##.
#...##
#.####
#.##.#
.###.#
..####
#...##
#.###.
....##
.#.##.
#...##
#.####
#.##.#
*###.#
**####
#***##
#*###.