贝茜去了购物中心的珠宝店,探寻一条魅力手链。 当然,她想用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)