c++ - 如何通过迭代解决0-1包问题?

标签 c++ algorithm recursion iteration

<分区>

Possible Duplicate:
Design patterns for converting recursive algorithms to iterative ones

我只能想出一个递归的方法: 如何将其转化为迭代? 为简单起见,我的递归方式只查找结果值。

#include<iostream>
//0-1 bag
using namespace std;
int weight[5]={50,30,45,25,5};
int value[5]={200,180,225,200,50};

int valueAfterTake(int objectNO, int bagSpaceLeft)
{
    int take,notTake;
    if(objectNO < 0)
    {
        return 0;
    }
    else
    {
        take = value[objectNO] + valueAfterTake(objectNO - 1,bagSpaceLeft - weight[objectNO]);
        notTake = valueAfterTake(objectNO - 1, bagSpaceLeft);
    }
    if(weight[objectNO] > bagSpaceLeft)
    {
        return notTake;
    }

    if(take > notTake)
    {
        return take;
    }
    else
    {
        return notTake;
    }
}


int main()
{
    cout<<valueAfterTake(4,100)<<endl;
    return 0;
}

最佳答案

考虑到您真正想要的,我认为这是 Design patterns for converting recursive algorithms to iterative ones 的重复问题

关于c++ - 如何通过迭代解决0-1包问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693937/

相关文章:

c++:没有匹配的函数调用,特别是它被声明为参数类型不匹配

c++ - 通过对数组元素的引用替换变量

c++ - 如何在 Eclipse 中将 C 项目与 C++ 静态库(使用 opencv)链接

algorithm - 评估字符串形式的数学表达式

java - 递归构建 <ul> 列表

Python:调用 Python 对象时超出了最大递归深度

c++ - C++文件输入/输出控制台输出

ruby - 需要一个 Ruby 方法来确定矩阵 "touching"另一个元素的元素

algorithm - 仅沿数据上边界拟合直线的高效算法

python - 装饰器在没有被调用的情况下运行