您的位置:首页 > 其它

zzu 10467: 控制食欲 --01背包

2016-05-01 16:29 441 查看


10467: 控制食欲

Time Limit: 1 Sec Memory Limit: 128 MB

Submit: 53 Solved: 15

[Submit][Status][Web
Board]


Description

MM像她的诸多姊妹一样,爱吃零食但又爱美,为了控制体重我们将她置于一个及其严格的节食计划之中。她每天食物不能超过H 克(5 <= H <= 45,000)。 过节啦,MM网购了许多零食,数数,居然有N种(<=500). 她自然想尽量多吃。MM算算每种零食的重量S_i (1 <= S_i <= H), , 计划自己在不超过节食的限制的前提下可以吃掉多少


Input

一行: 两个由空格隔开的整数: H 和 N 第2到第N+1行: 第i+1行是一个单独的整数,表示第 i 种零食重量S_i。


Output

一个单独的整数。表示MM最多可以吃的重量。


Sample Input

56 4
15
19
20
21


Sample Output

56

01背包,可以把H看做背包的容量,每一种零食的重量,也相当于重量。

<pre name="code" class="cpp">
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main(){
int h,n,a[505],i,j,sum,b[45005];
while(~scanf("%d %d",&h,&n)){
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
memset(b,0,sizeof(b));
for(i=1;i<=n;i++){
for(j=h;j>=a[i];j--){
b[j]=max(b[j],b[j-a[i]]+a[i]);
//printf("%d\n",b[j]);
}
}
printf("%d\n",b[h]);
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: