当前位置:   article > 正文

ACM(动态规划)_假如你现在拿到了许多的礼物,你要把这些礼物放进袋子里。你只有一个最多能装下 v

假如你现在拿到了许多的礼物,你要把这些礼物放进袋子里。你只有一个最多能装下 v

动态规划-背包类
 

打包
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB
描述
假如你现在拿到了许多的礼物,你要把这些礼物放进袋子里。你只有一个最多能装下V体积物品的袋子,你不能全部放进去。因为你拿不动那么重的东西。你估计你能拿的最大重量为G。现在你了解每一个物品的完美值、重量和体积,你当然想让袋子中装的物品的完美值总和最大,如何装?


输入
第一行V和G表示最大重量和体积
第二行N表示拿到N件礼物
第3到N+2行表示各礼物的完美值、重量和体积
输出
物品的完美值总和
样例输入
6 5
4
10 2 2
20 3 2
40 4 3
30 3 3
样例输出
50

 

题解思路:在基本背包基础上使用二维数组来解决(每个维度分别代表体积与体重)

源代码:

改进算法
 

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct Cell
  4. {
  5. int v;
  6. int g;
  7. int wmz;
  8. };
  9. Cell *sz2(int a)
  10. {
  11. return (Cell*)malloc(a*sizeof(Cell));
  12. }
  13. int **sz(int a, int b)// 前下标a:体积   后下标b:重量
  14. {
  15. int **p;
  16. int i=0, j;
  17. p=(int**)malloc(a*sizeof(int*));
  18. for(i=0;i&l
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/981719
推荐阅读
相关标签
  

闽ICP备14008679号