AtCoder ABC 165の復習で躓いたとこ
前回あたりで165の復習してましたが、Cが思うように解けませんでした。
syachineko.hatenablog.com
で、とりあえず解けなかった部分を整理
すると、そもそも数え上げの組み合わせをきちんと生成できなかったことが原因とわかりました。
qiita.com
調べてみると、pythonにはitertoolsという便利なものがあるそうで・・・。
これを参考にしたところ、すっきり解くことができました。
これ、中身どうなってるんだろう・・・?
note.nkmk.me
ということで、修正後のCは以下
import itertools N, M, Q = map(int, input().split()) a = [] aa = [] ref = [] ans = 0 for i in range(Q): tmp = list(map(int, input().split())) ref.append(tmp) #print("----tmp----") #print(ref) for i in range(M): aa.append(i) a = itertools.combinations_with_replacement(aa, N) #print("---a---") #print(a) for i in a: sum = 0 for j in ref: #print("---i, j---") #print(i, j) if i[j[1]-1]-i[j[0]-1] == j[2]: sum += j[3] #print("---sum---") #print(sum) if ans < sum: ans = sum print(ans)
無事に通りました☆