您的位置:首页 > 其它

类似于01背包问题 金明的预算

2013-12-15 11:04 211 查看



金明的预算

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 52  Solved: 7

[Submit][STATUS][Web
Board]

Description

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过M元钱就行”。金明这就犯愁了,他想买的东西有很多不知道该买哪几个,他又觉得不该浪费这次机会想尽可能的多花钱。这就需要聪明的你来帮他选择该买哪几个,告诉他最多能花多少钱。 

Input

第一行为两个数N和M(0<N≤25,0<M<2000)。N表示金明一共想买N个物品,M表示不能超过M元。 

第二行有N个小于等于100的正整数,分别表示N个物品的价格。

Output

输出最多能花多少钱。

Sample Input

5 10 1 2 3 4 5

Sample Output

10

HINT

Source

“指尖风暴”程序设计大赛

#include<stdio.h>
#define max(a,b) a>b?a:b
int a[26],f[1000]= {0};
int main()
{
int n,m,i,j,s=0;
scanf("%d%d",&n,&m);
int sum=0;
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for(i=1; i<=n; i++)
for(j=sum; j>=a[i]; j--)
f[j]=max(f[j],f[j-a[i]]+a[i]);
for(i=1; i<=sum; i++)
if(f[i]<=m)
{
s=max(s,f[i]);
}
printf("%d",s);
}


 

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