举个例子来算一下如何取最优 [1 3 4 6] 我们从开始选择,此时能够得到的最大值是1, 到时,我们应该在中选择,最大值变为3, 此时到,此时选择是从前一个的最大值和+下标为2-2时的最大值来比较取最大值, 到时,应该从前一个的最大值和+下标为3-2时的最大值,及 我们创建f数组,f[i]表示前i个房子能够得到的最大值 那么就可以替换一下上面的分析 f[0]=nums[0] f[1]=max(nums[0],nums[1]) f[2]=max(f[2-1],nums[2]+f[2-2]) f[3]=max(f[3-1],nums[3]+f[3-1]) 那么可以得出状态转移方程 code ...