競技プログラミングで頻出の「ナップサック問題」について質問です。
動的計画法という考え方を用いて価値の最大値を求めることは理解しました。
そこで、気がついたのですが、「何と何と何をそれぞれ何個ずつ組み合わせて」価値が最大になったというところを表すにはどのようなコードを追加すればよろしいでしょうか。
初歩的な質問ですみませんが、教えていただけますと幸いです。
⇩価値の最大値を表示するコード
pytohn
1#n:物の数 2#W:ナップサックの容量 3#v:物の価値 4#w:物の重さ 5 6n,W=map(int,input().split()) 7dp=[0 for j in range(W+1)] 8for i in range(n): 9 v,w=map(int,input().split()) 10 11 for j in range(w,W+1): 12 dp[j]=max(dp[j],dp[j-w]+v) 13 14print(dp[W])
ナップサック問題の解法 for Python
https://qiita.com/kzy83/items/64be4f5f1eaf08917f24
意外と解説がない!動的計画法で得た最適解を「復元」する一般的な方法
https://qiita.com/drken/items/0c7bab0384438f285f93
回答1件
あなたの回答
tips
プレビュー