動的計画法で部分和問題を解くときどの数字が使われているか知りたいです。あまり知識がないのでこのコードからlistのどの数字が使われたかを判断するにはどのように変更すればいいでしょうか?
main.py
1def mins(a, A): 2 # 初期化 3 N = len(a) 4 inf = float("inf") 5 dp = [[inf for i in range(A + 1)] for j in range(N + 1)] 6 dp[0][0] = 0 7 8 # DP 9 seki = [] 10 for i in range(N): 11 for j in range(A + 1): 12 if a[i] <= j: # i+1番目の数字a[i]を足せるかも 13 l = min(dp[i][j - a[i]] + 1, dp[i][j]) 14 dp[i + 1][j] = l 15 else: # 入る可能性はない 16 dp[i + 1][j] = dp[i][j] 17 18 return dp[N][A] 19 20list = [4,8,6] 21print(mins(list,10))
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。