当前位置:   article > 正文

P1049 [NOIP2001 普及组] 装箱问题(dp)C/C++_装箱问题 c++

装箱问题 c++

P1049 [NOIP2001 普及组] 装箱问题

在这里插入图片描述

因为每个物体,都有装与不装两种选择,所以我们得到状态转移方程:
f[j]=max(f[j],f[j-w[i]]+w[i]);

f[j] 为:当总容量为 j 时,不放第 i 件物品,所能装的最大体积。
f[j-w[i]]+w[i] 为:当总容量为 j 时,放了第 i 件物品后,所能装的最大体积。(即 j减去第 i 件物品体积 的容量能装的最大体积+第 i 件物品的体积。w[i] 为第 i 件物品体积)

#include<iostream>
#include<cstdio>
using namespace std;
int f[20005],w[35];
int main()
{
    int v,n;
    cin>>v>>n;
    for(int i=1;i<=n;i++)cin>>w[i];
    for(int i=1;i<=n;i++)
        for(int j=v;j>=w[i];j--)
            f[j]=max(f[j],f[j-w[i]]+w[i]);
    cout<<v-f[v];
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/332998
推荐阅读
相关标签
  

闽ICP备14008679号