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);
}
}
}