#3882. [GESP202603 六级 C++] 第 14 题

[GESP202603 六级 C++] 第 14 题

小朋友们去邻里拜年,每个家里有不同数量的糖果。规则是:不能连续进入两个相邻的房子(即不能同时取相邻两家的糖果)。目标是拿到最多糖果。以下是代码实现,请补全横线。

int visit(vector<int>& nums) {
    if (nums.empty()) {
        return 0;
    }
    int size = nums.size();
    if (size == 1) {
        return nums[0];
    }
    vector<int> dp = vector<int>(size, 0);
    dp[0] = nums[0];
    dp[1] = max(nums[0], nums[1]);

    for (int i = 2; i < size; i++) {
        dp[i] = ______;  // 在此处填写代码
    }

    return dp[size - 1];
}

{{ select(1) }}

  • dp[i] = dp[i - 1] + nums[i];
  • dp[i] = max(dp[i - 1], dp[i - 2] * nums[i]);
  • dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
  • dp[i] = dp[i - 2] + nums[i];