寒假训练--训练赛2--小P寻宝记

小P寻宝记

Time Limit: 1000MS Memory limit: 65536K

题目描述

小P同学爱好探险寻宝,一天他去了伊利哇呀半岛发现了一批宝藏有n种,但不幸的是小P很懒,出门只带了一个容量为v的背包,所以注定他不能带走所有的宝藏。但是小P又很贪心想带走尽量多的宝藏。。。已知每种宝贝的重量pi与价值wi是不一样的,小P很笨,没有你聪明,但是聪明的你想到了好的解决方案了吗?

输入

输入数据有多组。
每组第一行有两个正整数n(n <= 10000)和v(v <= 10000)分别表示n种宝藏和包的体积。
接下来n行,每行有两个正整数pi, wi。
分别表示每种宝藏的体积pi (pi<=1000),价值wi(wi<=1000)。

输出

小P所能带走的最多的宝藏。

示例输入

4 6
1 4
2 6
3 12
2 7

示例输出

23

提示

 

来源

xfl

示例程序
#include <stdio.h>
#include <string.h>
int p[11000] , w[11000] ;
int a[11000] ;
int main()
{
    int i , n , v  ,  j ;
    while(scanf("%d %d", &n, &v)!=EOF)
    {
        memset(a,0,sizeof(a));
        for(i = 0 ; i < n ; i++)
            scanf("%d %d", &p[i], &w[i]);
        for(i = 0 ; i < n ; i++)
            for(j = v ; j >= p[i] ; j--)
        {
            if(a[j] < a[j-p[i]]+w[i])
                a[j] = a[j-p[i]]+w[i] ;
        }

        printf("%d\n", a[v]);
    }
}

你可能感兴趣的:(寒假训练--训练赛2--小P寻宝记)