给定一个整数数组 a,每个元素表示一个位置上的数值。要求从数组中选择若干个元素,使得任意两个被 选择的元素在原数组中都不相邻,并且所选元素的总和最大。函数 choose(vector& a) 返回能够得到的最 大总和,则横线处应填写( )。

ax700839 单选题 共 个子题
/ 12
int choose(vector<int>& a) {
    if (a.empty()) return 0;

    int n = a.size();
    if (n == 1) return a[0];

    vector<int> dp(n, 0);
    dp[0] = a[0];
    dp[1] = max(a[0], a[1]);

    for (int i = 2; i < n; ++i) {
        dp[i] = __________________________;
    }

    return dp[n - 1];
}
A

dp[i - 1] + a[i]

B

max(dp[i - 1], dp[i - 2] + a[i])

C

max(dp[i - 2], a[i])

D

dp[i - 1] + dp[i - 2]

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧