当前位置:   article > 正文

11.7 背包问题(01背包)——测试用例_01背包问题测试用例

01背包问题测试用例
  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4. const int maxn =100; //物品最大件数
  5. const int maxv=1000;//V的上限
  6. int w[maxn],c[maxn],dp[maxv];
  7. int main()
  8. {
  9. int n,V;
  10. scanf("%d%d",&n,&V);
  11. for(int i=1;i<=n;++i)
  12. {
  13. scanf("%d",&w[i]);
  14. }
  15. for(int i=1;i<=n;++i)
  16. {
  17. scanf("%d",&c[i]);
  18. }
  19. //边界
  20. for(int v=0;v<=V;++v)
  21. {
  22. dp[v]=0;
  23. }
  24. //状态转移方程
  25. for(int i=1;i<=n;++i)
  26. {
  27. for(int v=V;v>=w[i];--v)
  28. {
  29. dp[v]=max(dp[v],dp[v-w[i]]+c[i]);
  30. }
  31. }
  32. //寻找最大的dp
  33. int ans=0;
  34. for(int i=0;i<=V;++i)
  35. {
  36. if(dp[i]>ans)
  37. {
  38. ans=dp[i];
  39. }
  40. }
  41. printf("%d\n",ans);
  42. return 0;
  43. }
  1. 测试数据:
  2. 输入:
  3. 5 8
  4. 3 5 1 2 2
  5. 4 5 2 1 3
  6. 输出 :
  7. 10

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/332941
推荐阅读
相关标签
  

闽ICP备14008679号