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)


無事に通りました☆