我一开始看到这题觉得特别棘手 这题可以想象成一个array,不能选择连续的element,怎么选能让array sum最大
100 200 20. 这个情况肯定只选200就好了。
100 200 101 这个情况就要选100和101
还有可能100 2 3 10000 这个的话,就应该选2 和10000.
这么多情况要考虑烦都烦死了。然后我就跑去睡觉了,在床上躺了一会觉得可以用DP来做, 然后起来就把它给做了。
Edit on 8月8日:
今天看basketwang, 他的做法更加厉害。 他一开始用了两个DP array来表示1. 偷。 2.不偷
如果这个房子偷的话,= 之前那个房子不偷+ 这个房子的价值
这个房子不偷的话,因为我们前一个房子也可以不偷。 = max(前一个不偷, 前一个偷)
发现只和前一个position有关,于是可以优化空间,只用两个变量!