Description
托塔李天王的三太子那吒,本领高强,他要赶在奥林匹克运动会之际,开一个头脑奥林匹克比赛,获胜者的奖品就是经过提练后的"氦-3"晶结体;该物质在月球上大量存在,是一种无色、无味的氦气同位素,它在核聚变研究中有重要作用。氦-3还是一种绝对清洁的能源,因为它本身不带放射性,因此不会产生任何放射性废料。可是如何从月球上将该晶体运回地球呢?那吒说:用我的肚兜吧!当然他的肚兜易受太阳风等因素的影响,载重量不能超过K(1≤n≤100000),超过这个值,肚兜就不会飞了;这个K值那吒会告诉你的,同时还会告诉你每一个晶体的重量。
你的任务是使这个肚兜一次能运回更多的晶体。
Input
输入文件jiangpin.in有两行:
第一行有两个正整数n和k,用一个空格隔开。表示有n个晶体,肚兜最大载重量为k。
第二行有n个不超过10000的正整数,分别表示n个晶体的重量,数与数之间用一个空格隔开。
Output
输出文件jiangpin.out只有一行,该行只有一个正整数,表示那吒的肚兜一次能运回的晶体重量的最大值。
Sample Input
5 15
2 4 4 8 10
Sample Output
14
HINT
【数据限制】
40%的数据: 1≤n≤20。
100%的数据:1≤n≤100。
好水啊......
#include <iostream>
#define SIZE 100001
using namespace std;
int dp[SIZE];
int main(int argc, char** argv)
{
int t, n, c, i;
scanf("%d%d", &n, &t);
while (n--)
{
scanf("%d", &c);
for (i = t; i >= c; --i) // 填满型背包
{
dp[i] = max(dp[i], c + dp[i-c]);
}
}
printf("%d", dp[t]);
return 0;
}