【01背包】可爱迷人的香穗子

可爱迷人的香穗子

  香穗子正准备参加一个晚会!现在她准备好好打扮一下,她准备戴上耳环,手镯,项链..等等一些装饰品,这里要说明的是,香穗子不是花瓶….

  香穗子最多能承受W的重量,每个装饰品也有各自的重量和美观值

  现在香穗子要怎么打扮,美观值的和最大

 

输入:

       第一行两个数,w,n

       接下来n行,每行两个数,表示物品的信息,第一个数是物品的重量,第二个数是物品的美观值

 

输出:

       表示香穗子最多能得到的最大美观值和

 

Sample Input

       10 2

       7 8

       8 7

 

Sample Output

       8

 

数据范围:

       n<=100,w<=10000

       答案保正小于Maxlongint

 

 

很裸的一个01背包问题,直接上代码

C++ Code

/*
C++ Code
http://oijzh.cnblogs.com
*/
#include<cstdio>
#define MAXN 110

int m,n,w[MAXN],p[MAXN],f[10010];

int main()
{
    freopen("2.in","r",stdin);
    freopen("2.out","w",stdout);
    scanf("%d%d",&m,&n);
    int i,j;
    for(i=1;i<=n;i++)scanf("%d%d",&w[i],&p[i]);
    for(i=1;i<=n;i++)
        for(j=m;j>=w[i];j--)
            f[j]>?=f[j-w[i]]+p[i];
    int max=f[0];
    for(i=0;i<=m;i++) max>?=f[i];
    printf("%d",max);
    return 0;
}

 

 

posted @ 2012-10-14 20:47  jiangzh  阅读(285)  评论(0编辑  收藏  举报