【アルゴリズム】完全バックパック
1444 ワード
n種類の品物と容量mのリュックサックがあり、それぞれの品物には無限のものがあります.
i番目の品物の体積はweightで、価値はvalueです.リュックサックにどのアイテムを入れるかを解くと、これらのアイテムの体積の合計がリュックサックの容量を超えず、価値の合計が最大になります.
i番目の品物の体積はweightで、価値はvalueです.リュックサックにどのアイテムを入れるかを解くと、これらのアイテムの体積の合計がリュックサックの容量を超えず、価値の合計が最大になります.
1 //"n" is the number of kinds.
2 //"m" is the capacity of the bag.
3 //w[]:weight , v[]:value .
4
5 for(int i=1 ; i <= n ; i++) {
6 for(int val=0 ; val<=m ; val++) {
7 if( val >= w[i] ) dp[val] = max( dp[val] , dp[ val-w[i] ]+v[i] );
8 }
9 }