关于树形DP(树形动态规划)
时间:2011-12-11
来源:互联网
如题,找了两天也没有哪里详细讲这个东西的。。。有哪位高手可以讲解一下。。或者给个链接什么的。。。
树形DP都是二叉树吗?那N叉树怎么办?
在解决这类问题的时候应该怎么建造树呢?如何建立状态转移方程呢?
多谢啦~!
树形DP都是二叉树吗?那N叉树怎么办?
在解决这类问题的时候应该怎么建造树呢?如何建立状态转移方程呢?
多谢啦~!
作者: snowing0427 发布时间: 2011-12-11
就是树上的动态规划
一般是:叶->根,即由叶子结点状态更新根结点
比如说求一棵树上的某个关键字的最大值:
可以这样 d[根结点]=max(d[孩子结点])
通过不停递归下去,可以求得这棵树上的最大值
这是树形dp一个很简单的举例
主要也是一个思想,至于教程:维基,google很多的
一般是:叶->根,即由叶子结点状态更新根结点
比如说求一棵树上的某个关键字的最大值:
可以这样 d[根结点]=max(d[孩子结点])
通过不停递归下去,可以求得这棵树上的最大值
这是树形dp一个很简单的举例
主要也是一个思想,至于教程:维基,google很多的
作者: nuptxxp 发布时间: 2011-12-11
树形dp不一定要二叉树,主要是注意从叶到根的更新递推关系
上面那个我写个伪代码吧:
C/C++ code
调用从根结点开始调用就行
C/C++ code
上面那个我写个伪代码吧:
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28