二次元配列にしないで解いてる人もいるみたいだけど私にはさっぱりわからないのでとりあえず二次元で。
”これまでに作成可能な点数であることが確認できれば、現在確認中のスコアを足した点数も作成可能である”ことを二次元配列で表現。
最終的には、最後の行を見れば作れる点数の個数がわかる。
https://atcoder.jp/contests/tdpc/tasks/tdpc_contest
import numpy as np
N = int(input())
line = input().split()
p = []
p.append(0)
for i in line:
p.append(int(i))
dp = np.zeros((len(p),sum(p)+1),np.int8)
dp[0,0]=1
for j in range(1,len(p)):
for i in range(0,sum(p)+1):
if dp[j-1,i]:
dp[j,i+p[j]] = 1
dp[j,i] = 1
#print(dp)
print(sum(dp[len(p)-1,:]))
0 件のコメント:
コメントを投稿