基本上答案是f(n) = max( f(n-1), f(n-2) + arr[n] )
而你却在问为什么。
我们假设这个数组arr = [9,1,7,9]
and f(n)
是函数。
当数组只有[9]
,你的最大f(0)
将arr[0]
.
当数组为[9,1]
,你的最大f(1)
is max(arr[0], arr[1])
.
当数组为[9,1,7]
,如果您选择7
, you can't select 1
所以f(n-2) + arr[n]
。但是,如果您不选择7
,你最大f(2)
将与f(1)
这是f(n-1)
.
当数组为[9,1,7,9]
,您需要同时删除 1 和 7 并选择 9、9。f(n) = max( f(n-1), f(n-2)+arr[n] )
方程满足这种情况。