poj3624----01bag

往手镯上镶嵌宝石,当然所嵌宝石的总重量是有上限的,要求所嵌宝石的总价值最大,M为总重量上限,一共有n颗宝石
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;

int a[40000][3];
int dp[40000];

int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++)
        scanf("%d%d",&a[i][0],&a[i][1]);
    memset(dp,0,sizeof(dp));

    for(int i=0;i<n;i++)
        for(int j=m;j>=a[i][0];j--)
            dp[j]=max(dp[j],dp[j-a[i][0]]+a[i][1]);

    printf("%d\n",dp[m]);
    return 0;
}


你可能感兴趣的:(poj3624----01bag)