for (int i = 1;i <= G;i++)
{
for (int j = 0;j <= D;j++)
{
if (dp[i-1][j] >= a[i].t)
{
dp[i][j] = max(dp[i][j], dp[i-1][j] + a[i].f);
}
if (j >= a[i].h && dp[i-1][j-a[i].h] >= a[i].t)
{
dp[i][j] = max(dp[i][j], dp[i-1][j-a[i].h]);
}
}
}
当时因为没赋初值,调了一个小时都是0,都快崩溃了啊啊,所以一定要把最初的生命值赋好(就是10)