动态规划,迭代的方法 dp[i] = max(num[i] + dp[i - 2], dp[i - 1])
要先记下dp[0]、dp[1]、dp[i]从第三位开始。
由于是环, 所以回出现三种情况:
1. 两边都不选
2.选左不选右
3.选右不选左
这三种情况归根结底就是[1:]、[:-1]两种。
由于是树状图,所以可以看作是树的每一层看做是一个节点。
1.偷这层,子层不能偷,偷子子层
2.不透这层,偷子层
和打家劫舍3异曲同工之妙
1.当前子树 root 有相机
2.当前子树root无相机,被父亲监控
3.当前子树 root 无相机,被儿子监控
参照: