一个疑问
查看原帖
一个疑问
788089
hgzxHZR楼主2023/8/26 11:31

求第k优解的那段代码,为什么我直接用dp数组存是错误的,而用now数组现存,再转存到dp数组就是对的 注:下代码中,volume为体积,worth为价值

//情况1
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;
    }
//情况2
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];
2023/8/26 11:31
加载中...