用Qt写01背包问题时发现运行结果怎么都不对,可是debug结果是对的,就找了个在线编译器发现结果是正确的,想知道什么原因
具体代码和图片请大家移步
http://bbs.csdn.net/topics/392216005
感谢
程序写的有问题, C++不支持动态数组,而且边界问题比较严重。编译都不能通过,更不能运行。
int f[n + 1][W + 1] ;
n 和 W都是传入的参数,语法都不对。
for(int idx = 1; idx <= n; idx++){
f[idx][0] = 0;
for(int j = 1; j <= W; j++){
f[idx][j] = f[idx - 1][j];
if(j >= w[idx]) // 这里超出了边界
f[idx][j] = max(f[idx - 1][j - w[idx-1]] + v[idx-1], f[idx-1][j]);
}
}
自己再仔细看看.