记忆化搜索的前提是被搜索之后的状态达到最优,不会再被前面的数据更新,如果你的题目中状态转移的结果会影响到后面的结果 ,即有后序性,那么在转移过程中如果前面的状态还没处理完就转移了并且使用记忆化搜索的方法锁定转移后的状态会导致后面的状态无法被继续更新,但动态规划使用的是局部最优解来转移到全局最优解,你这时的局部解已经被锁定而且不是最优的就无法得出正确方案
有几种解决方法
1.把前面的状态全部处理完在转移,但是如果用dfs深搜来转移就会导致前面的状态还没处理完就到达了后面的状态。所以可以采取bfs的方法
2.不用记忆化搜索,才用松弛的方法来更新数据(大概率会tle)
一些前面状态的选择会影响后面的选择,即一些题目出现的一些限制条件导致你无法确定后面的步骤的可行性
1.依旧采用背包思想,背包思想就是前面的选取方法会影响后面的选择方法,不妨想像一条时间纸带,在每一次前面状态的处理中可以在时间纸带的从前往后打上其标记,这样如果后面的转移会用到前面状态留下的标记就可以用该状态进行转移,并且在每一层状态都有其限制的情况下也是可行的,这时只要给每层状态的转移设置转移限制条件,即后面的状态可以不断地被前面到达条件的状态不断更新直至达到条件之后就可以更新后面的状态,如果直到状态已经达到该层了还是未达到转移所必须的条件该状态就会被舍弃或者导致整个状态转移终止。
2.如果状态没有严格的层次关系,因为如果前面的状态会影响后面的状态,不妨把这两个状态放在一起处理这样状态之间就减少了前后关联性