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

vs130790 单选题 共 个子题
def choose(a):
    if not a:
        return 0

    n = len(a)
    if n == 1:
        return a[0]

    dp = [0] * n
    dp[0] = a[0]
    dp[1] = max(a[0], a[1])

    for i in range(2, n):
        dp[i] = __________________________

    return dp[-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]

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