ACM(动态规划)

博客探讨了在ACM竞赛中如何应用动态规划解决背包问题。给定最大重量和体积限制,目标是最大化礼物的完美值总和。文章通过样例输入输出解释问题,并提供了一种使用二维数组优化的算法解决方案。
摘要由CSDN通过智能技术生成

动态规划-背包类
 

打包
总时间限制: 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

 

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

源代码:

改进算法
 

#include<stdio.h>
#include<stdlib.h>
struct Cell
{
int v;
int g;
int wmz;
};
Cell *sz2(int a)
{
return (Cell*)malloc(a*sizeof(Cell));
}
int **sz(int a, int b)// 前下标a:体积   后下标b:重量
{
int **p;
int i=0, j;
p=(int**)malloc(a*sizeof(int*));
for(i=0;i&l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值