+ -
当前位置:首页 → 问答吧 → 关于树形DP(树形动态规划)

关于树形DP(树形动态规划)

时间:2011-12-11

来源:互联网

如题,找了两天也没有哪里详细讲这个东西的。。。有哪位高手可以讲解一下。。或者给个链接什么的。。。

树形DP都是二叉树吗?那N叉树怎么办?

在解决这类问题的时候应该怎么建造树呢?如何建立状态转移方程呢?

多谢啦~!

作者: snowing0427   发布时间: 2011-12-11

就是树上的动态规划
一般是:叶->根,即由叶子结点状态更新根结点
比如说求一棵树上的某个关键字的最大值:
可以这样 d[根结点]=max(d[孩子结点])
通过不停递归下去,可以求得这棵树上的最大值
这是树形dp一个很简单的举例
主要也是一个思想,至于教程:维基,google很多的

作者: nuptxxp   发布时间: 2011-12-11

树形dp不一定要二叉树,主要是注意从叶到根的更新递推关系
上面那个我写个伪代码吧:
C/C++ code
int Max_Tree(int root){
   if( tree[root] 为叶子结点 ){
        return key[root];
    }
    int ans=-INF;
    for (node temp=tree[root]的儿子结点){
        int t1;
        if( (t1=Max_Tree(temp)) > ans ){
            ans=t1;
         }
     }
     return ans;
}

调用从根结点开始调用就行
C/C++ code
ans=Max_Tree(ROOT);

作者: nuptxxp   发布时间: 2011-12-11

热门下载

更多