Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试问题——我从C++程序中得到随机输出_C++_Algorithm_Optimization - Fatal编程技术网

调试问题——我从C++程序中得到随机输出

调试问题——我从C++程序中得到随机输出,c++,algorithm,optimization,C++,Algorithm,Optimization,这是一个非常简单的代码,应该解决切割杆优化问题。大多数情况下,它输出正确的输出,但有时会给出随机答案。我不知道是什么原因造成的 代码: 如何重新生成错误: 只需运行程序几次。大多数情况下,答案是30。这是正确的。但其他时候,它会给出一个随机的大数字作为输出 for (int i = 0; i <= n; ++i) { q = max(q, p[i] + cutRod(p, n-i-1)); } 这里,您调用的是索引[PN],它是索引之外的,但是C++中的数

这是一个非常简单的代码,应该解决切割杆优化问题。大多数情况下,它输出正确的输出,但有时会给出随机答案。我不知道是什么原因造成的

代码:

如何重新生成错误:

只需运行程序几次。大多数情况下,答案是30。这是正确的。但其他时候,它会给出一个随机的大数字作为输出

for (int i = 0; i <= n; ++i)
    {
        q = max(q, p[i] + cutRod(p, n-i-1));
    }

这里,您调用的是索引[PN],它是索引之外的,但是C++中的数组仍然允许您访问具有垃圾值的内存块,因此基本上添加了具有返回值的函数的垃圾值。 在数组中,p的有效值最多只有0到n-1

我想这就是造成问题的原因

int n=10;int p[n]不是有效的C++。n必须是常量,或者只是更改为int p[]={…}i
for (int i = 0; i <= n; ++i)
    {
        q = max(q, p[i] + cutRod(p, n-i-1));
    }