前提・実現したいこと
Atcoder(ABC173-C)が実行時エラー(RE)になってしまいます。
https://atcoder.jp/contests/abc173/tasks
.を0、#を1にするように置き換えて、H×Wの行列を作りました。
縦と横を消すという処理をH×W行列の前後にH×HとW×W行列をかけることによって表現することを考えました。
H×HとW×W行列は0と1の組合せが記述されている対角行列です。
計算後の行列の1の個数を数えることによって答えを出力します。
どなたか、実行時エラーになってしまう理由を知りたいです。よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Python
1import numpy as np 2import itertools 3 4H, W, K = list(map(int, input().split())) 5c = [input().split() for l in range(H)] 6b=[] 7d=[] 8for m in range(len(c)): 9 for item in c[m]: 10 item_mod = item.replace("." , "0") 11 item_mod = item_mod.replace("#" , "1") 12 b.append(item_mod) 13 d.append(b) 14 b=[] 15 16C_arr = np.array(d , dtype = "int") 17 18In = np.array(list(itertools.product([0,1] , repeat=H))) 19Out = np.array(list(itertools.product([0,1] , repeat=W))) 20 21ans = 0 22for i in range(2**H): 23 for j in range(2**W): 24 In_matrix = np.diag(In[i]) 25 Out_matrix = np.diag(Out[j]) 26 27 In_C = np.dot(In_matrix , C_arr) 28 In_C_Out = np.dot(In_C , Out_matrix) 29 30 ICO = In_C_Out.flatten() 31 ICO = ICO.tolist() 32 33 if ICO.count(1) == K: 34 ans += 1 35 36print(ans)
試したこと
入力例を一通り試したところ、うまくいきました。
atcoderでも数問は正解になりました
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー