- 这是一道很经典的题目,动态规划基础题,我们可以将一种药看作一种状态,然后对每格进行
max
取值,下面是代码:
#include<cmath>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<algorithm>
using namespace std;
int f[105][1005];
int limit,n,t,value;
int main()
{
scanf("%d%d",&limit,&n);
for(int i=0;i<n;i++){
scanf("%d%d",&t,&value);
for(int j=0;j<=limit;j++){
if(j+t<=limit) f[i+1][j+t]=max(f[i+1][j+t],f[i][j]+value);
f[i+1][j]=max(f[i+1][j],f[i][j]);
}
}
printf("%d",f[n][limit]);
return 0;
}