首页 > 试题广场 >

给定一个整数数组 `nums`,你需要选择其中的一些数字进行

[单选题]
给定一个整数数组 `nums`,你需要选择其中的一些数字进行累加,使得累加和最大。但是,你不能选择相邻的数字。请问,累加和的最大值是多少?
请填写下面缺失的代码部分,使得函数能够实现上述功能()
int maxNonAdjacentSum(vector<int>& nums) {
    int n = nums.size();
    vector<int> dp(n);  // dp[i]表示以nums[i]结尾的非相邻数字的最大和
    dp[0] = nums[0];
    dp[1] = max(nums[0], nums[1]);
    for (int i = 2; i < n; ++i) {
        dp[i] = max(dp[i-1], __(1)__);  // 状态转移方程
    }
    return dp[n-1];
}
  • dp[i-1] + nums[i]
  • dp[i-2] + nums[i]
  • dp[i-2] + nums[i-1]
  • dp[i-1] + nums[i-1]

这道题你会答吗?花几分钟告诉大家答案吧!