我不明白为什么for循环变得无限?

时间:2014-03-02 07:30:04

标签: c++ loops for-loop dynamic-programming

我无法理解为什么循环变得无限。查看了gdb,看到i = 8的{​​{1}}值再次变为i但是不清楚为什么会更改。

i = 4

1 个答案:

答案 0 :(得分:0)

下面

if(v[j] <= i && min[i - v[j]] < min[i])
{
    min[i] = min[i-v[j]];
}

您正在写信min[i]。您的i最多可以更改为w-1w为11,因此i最多可以更改为10.但您的min数组大小为size,等于3。

因此,当您从min边界设置元素时,您正在擦除堆栈数据。可能在某些时刻,您还使用新值4擦除局部变量i(也存储在堆栈中)。

更新:

您可以更改

int min[size];

int min[size > w ? size : w];

检查。