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