求第k优解的那段代码,为什么我直接用dp数组存是错误的,而用now数组现存,再转存到dp数组就是对的
注:下代码中,volume为体积,worth为价值
for(int k=1;k<=K;++k)
{
if(dp[j][h1]>dp[j-a[i].volume][h2]+a[i].worth)
{
dp[j][k]=dp[j][h1];
++h1;
}
else
{
dp[j][k]=dp[j-a[i].volume][h2]+a[i].worth;
++h2;
}
for(int k=1;k<=K;++k)
{
if(dp[j][h1]>dp[j-a[i].volume][h2]+a[i].worth)
{
now[k]=dp[j][h1];
++h1;
}
else
{
now[k]=dp[j-a[i].volume][h2]+a[i].worth;
++h2;
}
}
for(int k=1;k<=K;k++) dp[j][k]=now[k];