你不能直接输出f[m][y]
by 张曜玺 @ 2017-08-28 19:52:56
要从dp数组中找出最大的之后再输出
by 张曜玺 @ 2017-08-28 19:53:34
```cpp
#include <bits/stdc++.h>
using namespace std;
int y,m,w[105],v[105],f[2000][2000],ans;
int main()
{
scanf("%d%d",&y,&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&w[i],&v[i]);
for(int i=1;i<=m;i++)
for(int j=1;j<=y;j++)
{
if(w[i]<=y)
f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
else
f[i][j]=f[i-1][j];
ans=max(ans,f[i][j]);
}
cout<<ans;
return 0;
}
```
by FireKid @ 2017-08-28 19:55:51
又WA了
by FireKid @ 2017-08-28 19:56:06
而且题解都是直接输出f[m][y]的
by FireKid @ 2017-08-28 19:56:39
你的y和m分别是什么
by 张曜玺 @ 2017-08-28 19:59:38
你这两层循环错了吧
by 张曜玺 @ 2017-08-28 20:00:34
总时间和药数
by FireKid @ 2017-08-28 20:01:07
内层循环不应该从0开始吗
by 张曜玺 @ 2017-08-28 20:01:52
好像还是不对,我再看看。。。。
by 张曜玺 @ 2017-08-28 20:03:59