#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[][]
原文地址:https://www.cnblogs.com/lux-ace/p/10546611.html
时间: 2024-11-07 20:38:22