有几个问题
查看原帖
有几个问题
622751
Gril楼主2022/11/6 16:11

1.为什么这种传统的第一层循环数量,第二层最大高度,第三次物品个数不行

    for (int i = 1; i <= N; i++)
    {
        for (int j = ac[i].a; j >= 0; j--) 
        {
            for (int k = 1; k <= ac[i].c && k * ac[i].h <= j; k++)
            {
                f[j] = max(f[j], f[j - ac[i].h] + ac[i].h);
            }
        }
    }

必须得这么写

    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= ac[i].c; j++)
        {
            for (int k = ac[i].a; k >= ac[i].h; k--)
            {
                f[k] = max(f[k], f[k - ac[i].h] + ac[i].h);
            }
        }
    }
2022/11/6 16:11
加载中...