黄金矿工等问题,DP处理一般是构建dp[][]二维数组来求解,便于理解,但是这样的话就保存了一个m*n矩阵,空间上浪费了,因为一般来说,当前状态之和之前一两步的状态有关,所以没必要保存之前所有的结果。


下面来讲讲如何理解从dp[][]过渡到dp[]

如上图所示,如果状态转移式:,那么我们求黄色区域只需要知道两个红色区域了,如果以 i 为数组,那我们完全可以将6视为cur[i-1],4视为pre[i],递推关系如下:

pre怎么求呢?pre在很多次循环之前也是cur呀,所以只要有边界条件,都是可以求出来滴!只不过只保存两列数据,而不是整个矩阵。


 

能不能把pre数组也用cur 替代呢?

 

个人理解如下(可能不对,但是是一个思路,之后再慢慢理解吧。。) 

      叉叉代表pre和cur[i-1],我们完全可以将左边的xx全部移到右边,然后自身迭代就可以了