动态规划的两种方式

来源:互联网 发布:伊甸园 本站域名是什么 编辑:程序博客网 时间:2024/06/01 07:20

动态规划问题的两种处理方式:自底向上和自上向下。

各自有各自的优势,以算法导论上的钢铁切割为例,贴出代码缓存一下。

int maxvalue(int cur_length, int left){    int value1 = 0;    if (a[left] || left == 0)    {        value1 = a[left];    }    else    {        value1 = maxvalue(1, left - 1);        a[left] = value1;    }    int temp = value[cur_length] + value1;    if (left == 0)    {        return temp;    }    else    {        int cur_temp = maxvalue(cur_length + 1, left - 1);        if (temp > cur_temp)        {            return temp;        }        else        {            return cur_temp;        }    }}int maxvalue(int length){    for (int i = 1; i < length; i++)    {        int p = 0, temp = 0;        for (int j = 1; j <= i; j++)        {            temp = value[j] + a[i];            if (p < temp)            {                p = temp;                root[i] = j;//每次记忆当前取的长度            }        }        a[i] = p;    }}
原创粉丝点击