动态规划_leetcode312解题报告

#coding=utf-8

# leetcode 312 解题报告 20190307 找工作期间
#解题思路
# 假设初始气球的状态是 [3,1,5,8]

#、顺向思维
# 第一步有四个选择:3,1,5,8 ,
# 第二步有三个选择:…… o(n!)
# 每一步后 原问题的规模是减少了 ,但是数据的同质性却破坏了:
# 因为原问题的数组是连续的,子问题的数组不是连续的 这破坏了数据同质性的原则。

#
# 所以后面的思路就是 将不连续的数组 转换为连续的数组,这样子问题和原问题
# 数据结构同质,且数据规模-1,同时其解空间树上有子问题重叠
# 可以用记忆化递归方式解决,用字典存储状态,字典指是数据的排列状态


#数据规模递增的思想:
# [8] -> [5,8] ->[1,5,8] -> [3,1,5,8]
# 因为子问题与原问题不是同质的,原问题不能利用子问题的最优解,思路限于僵局了。

# "终局思想"
# 从解空间树上向上递推 : 关键是状态如何定义 : "生长学习法"
# 是怎么想到用[i][j] 定义状态的呢?
# 怎么定义[][]8 []58 …… 这样的状态呢 ?
# 怎么定义[][]a []ab …… 这样的状态呢?

# 当只有一个值时, []x[] [][]x 的不同在于 数组的很坐标不同 可以用 s1(i) 表示状态
# []xx 与 xx[] 和 x[]x 又要如何表示状态呢?s1([l1,r2],[l2,r2],……) 来表示状态
# 重要的一点是 s2的状态 可以 通过 s1 线性 叠加得到 : 满足状态的递推性。
# 即 value(s1) -> value(s2) -> value(sn)

# 原问题得解 :1)记忆化递归
# 2) 动态规划


# 1 5 8
# []58 1[]8 15[]
# [][]8 []5[] [][]8 1[][] []5[] 1[][]

猜你喜欢

转载自www.cnblogs.com/lux-ace/p/10546611.html
今日推荐