01背包一维数组

这是一个关于背包问题的实例,描述了贝茜选择饰物填充手链以达到最大合意性总和的问题。给定饰品数量N、重量限制M以及每个饰品的重量Wi和合意性Di,目标是找到最大合意性总和。由于数据范围限制,二维数组解决方案会导致超时,因此建议使用一维数组来优化解题策略。
摘要由CSDN通过智能技术生成

贝茜去了购物中心的珠宝店,探寻一条魅力手链。 当然,她想用N个(1≤N≤3,402)可用的饰物填充尽可能的最佳饰物。 提供的列表中的每个超级字符i的权重均为Wi(1≤Wi≤400),“合意性”因子Di(1≤Di≤100),最多可以使用一次。 贝西只能支撑重量不超过M(1≤M≤12,880)的手链。

给定重量限制作为约束,并列出具有其重量和合意性等级的护身符清单,就可以得出最大可能的等级总和。

输入值
*第1行:两个以空格分隔的整数:N和M
*第2…N + 1行:第i + 1行使用两个以空格分隔的整数来描述字符i:Wi和Di

输出量
*第1行:在给定重量限制的情况下,可以达到的最大魅力合乎要求的单个整数

样本输入
4 6
1 4
2 6
3 12
2 7
样本输出
23

这个是一个基本的背包问题,要注意的是这道题不能用二维数组来做,因为双层for循环再加上数据范围可能爆掉。
二维数组代码
会显示超时。

#include<stdio.h>
int b[1010][1010]= {
   0},w[3500],v[3500];
void aaa(int x,int y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值