往手镯上镶嵌宝石,当然所嵌宝石的总重量是有上限的,要求所嵌宝石的总价值最大,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; }