1、题目
给定一个数组,选择数字组成组合,请问哪个组合的累加和最大。
要求:相邻的数不能同时选。
例子:
输入:[3, 7, 9]
输出:12。选择 3 和 9
2、思路
定义dp[i],表示在 arr 的 0 ~ i i i 范围上按照选择数组成组合,累加和最大的结果,即所有可能性的最优。
dp[0] 就是在 arr 的 [0,0] 范围上选组合,因为只有一个数,所以 dp[0] = arr[0];
dp[1] 就是在 arr 的 [0, 1] 范围上选组合,但是因为不能选相邻,所以 dp[1] = max(arr[0], arr[1]);
普遍情况dp[i],在 arr 的 [0, i] 范围上选择ÿ