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


金明的预算

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 52   Solved: 7
[ Submit][ STATUS][ Web Board]

Description

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

Input

第一行为两个数N和M(0 
第二行有N个小于等于100的正整数,分别表示N个物品的价格。

Output

输出最多能花多少钱。

Sample Input

5 10 1 2 3 4 5

Sample Output

10

HINT

Source

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

#include
#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);
}


 

 

你可能感兴趣的:(代码,做过的题)