結果

問題 No.640 76本のトロンボーン
ユーザー ryutaro-albert2005
提出日時 2018-02-09 17:41:39
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 1,297 bytes
コンパイル時間 165 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 50,956 KB
最終ジャッジ日時 2024-10-07 17:44:54
合計ジャッジ時間 9,111 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 2
other WA * 6 RE * 2 TLE * 1 -- * 6
権限があれば一括ダウンロードができます

ソースコード

diff #

import numpy as np

class Solver(object):
    def __init__(self):
        self.max_depth = 0

    def puts(self, ind, muki, box, n, depth=0):
        i = ind // n
        j = ind % n
        if box[i, j] != 0:
            if not ind == n**2-1:
                self.puts(ind+1, 0, box, n, depth)
                self.puts(ind+1, 1, box, n, depth)
        else:
            new_box = box.copy()
            new_depth = depth
            if muki == 0:
                room = new_box[i:i+n-1, j]
            else:
                room = new_box[i, j:j+n-1]
            if room.sum() >= 1 or room.size != n-1:
                pass
            else:
                room += 1
                new_depth = depth + 1
                for k in range(ind+1, n**2):
                    self.puts(k, 0, new_box, n, new_depth)
                    self.puts(k, 1, new_box, n, new_depth)
        if self.max_depth < depth:
            self.max_depth = depth

    def solve(self, box, n):
        self.puts(0, 0, box, n)
        self.puts(0, 1, box, n)
        return self.max_depth
    
n = int(input())
box = []
for i in range(n):
    row = list(input().strip())
    row = (np.array(row)=='#').astype('i')
    box.append(row)
box = np.array(box)

solver = Solver()
ans = solver.solve(box, n)

print(str(ans)+'\n')
0