用的刷表法,样例能过,评测全WA
代码如下:
using namespace std;
int T,m;
int t[1005];//时间
int v[1005];//价值
int dp[105][1005];//dp[i][j]:前i株草药费时j所得到的最大价值
int ans;
int main()
{
cin>>T>>m;
for(int i=1;i<=m;i++)
cin>>t[i]>>v[i];
for(int i=1;i<=m;i++)
{
for(int j=0;j<=T;j++)
{
if(j+t[i]<=T)dp[i][j+t[i]]=max(dp[i-1][j]+v[i],dp[i][j+t[i]]);//状态转移
}
}
for(int j=0;j<=T;j++)
ans=max(ans,dp[m][j]);
cout<<ans<<endl;
return 0;
}