1
爲什麼在這段代碼中不需要動態分配?爲什麼在這裏不需要動態分配
int knapSack(int W, int wt[], int val[], int n)
{
int i, w;
int K[n+1][W+1];
// Build table K[][] in bottom up manner
for (i = 0; i <= n; i++)
{
for (w = 0; w <= W; w++)
{
if (i==0 || w==0)
K[i][w] = 0;
else if (wt[i-1] <= w)
K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]);
else
K[i][w] = K[i-1][w];
}
}
return K[n][W];
}
總感覺不能用可變如K[n+1][W+1];
這是一個VLA其中C99添加了支持。 – FatalError
這是一個[可變長度數組](https://en.wikipedia.org/wiki/Variable-length_array),一個C99加法。 – Praetorian
...然後祈禱沒有人通過'W'或'n'的某個大值。我會完全避免它們。 –