Algorithm 如何改进递归回溯算法

Algorithm 如何改进递归回溯算法,algorithm,recursion,refactoring,stack,backtracking,Algorithm,Recursion,Refactoring,Stack,Backtracking,我为我的问题实施了基于回溯的解决方案,这是我在上一篇文章中指定的: (Bin是vector数据类型的简单包装器,带有sum()等附加方法) bool回溯(向量和项目、向量和仓位、无符号索引、无符号仓位容量) { if(bin_capacity-items.front()

我为我的问题实施了基于回溯的解决方案,这是我在上一篇文章中指定的:

(Bin是
vector
数据类型的简单包装器,带有sum()等附加方法)

bool回溯(向量和项目、向量和仓位、无符号索引、无符号仓位容量)
{
if(bin_capacity-items.front()<0)返回false;
如果(索引if(bin[i].sum()+项[index]+项.back())我认为有一种动态规划算法可以解决多箱装箱问题,或者至少有一种多项式近似算法。请看一看。

为了避免堆栈溢出,您可能需要尝试一种迭代方法。@robjb:虽然可能,但通常回溯算法会转换为迭代算法算法并不简单,迭代解决方案必须包含一个堆栈[或等效的强大数据结构]同样如此。@amit:非常正确……我不认为这样做是微不足道的。如果目标是减少溢出,那么这可能是一个值得尝试的尝试,但我希望这将是性能和安全之间的权衡。@amit如果您使用显式堆栈,您可以控制最大大小,而不是不可预测的函数调用堆栈。@robjb从我的问题中中断了很长时间后,我决定实现一个迭代解决方案。然而,它并没有像我预期的那样工作。