B - Bombs Editorial by evima

原案者の実装

基本的には問題文で述べられた通りに爆発を実装することになりますが、入力例 3 のようなケースで「爆発する前の爆弾」を吹き飛ばさないように注意を要します。以下の実装例では、各マスに対してそのマスが爆発に巻き込まれるかを個別に判定することでこれを回避しています。

その他雑記:

  • \(R, C \leq 20\) と盤面が狭いため、爆弾の威力を気にせず \(R^2 C^2\) 周の四重ループを書いてしまって問題ありません。
  • 空きマスや壁を威力 \(-1\) の爆弾とみなすと実装が楽になるかもしれません。

実装例:(Python)

R, C = map(int, input().split())
B = [input() for i in range(R)]
for i in range(R):
    for j in range(C):
        x = B[i][j]
        for i2 in range(R):
            for j2 in range(C):
                p = int(B[i2][j2]) if B[i2][j2].isdigit() else -1
                if abs(i - i2) + abs(j - j2) <= p:
                    x = '.'
        print(x, end='')
    print()

posted:
last update: