二刷提高课,题解目录在这里— 提高课的题解目录
对于每一株药草只有选取与不选两种可能,所以是一个经典的01背包问题
#include<iostream>
using namespace std;
int a[110],t[110];
int f[110][1010];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)cin>>t[i]>>a[i];
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
f[i][j]=f[i-1][j];
if(j>=t[i])f[i][j]=max(f[i][j],f[i-1][j-t[i]]+a[i]);
}
cout<<f[m][n];
}
max里不应该是 max(f[i-1][j] 。。) 嘛