蚂蚁3.28算法笔试第三题

题目描述:
数组染色
数组相邻的三个元素不能同时染色,也不能一个也不染色。
求染色元素的最大和

dp[i][0]  定义为位置i不染色,i - 1也不染色
dp[i][1]= 定义为位置i不染色,i - 1染色
dp[i][2] = 定义为位置i染色,i - 1不染色
dp[i][3] = 定义为位置i染色,i - 1也染色

def dp_color(nums):
    n = len(nums)
    dp = [[0, 0, 0, 0] for _ in range(n)]
    dp[0][2] = nums[0]
    dp[0][3] = nums[0]

    dp[1][1] = nums[0]
    dp[1][2] = nums[1]
    dp[1][3] = nums[0] + nums[1]

    for i in range(2, n):
        dp[i][0] = dp[i - 1][1]
        dp[i][1] = max(dp[i - 1][2], dp[i - 1][3])
        dp[i][2] = nums[i] + max(dp[i - 1][0], dp[i - 1][1])
        dp[i][3] = nums[i] + dp[i - 1][2]
    return max(dp[n - 1])
全部评论
点赞 回复 分享
发布于 2023-03-29 13:42 江苏
太强了
点赞 回复 分享
发布于 2023-03-28 21:22 广东
m
点赞 回复 分享
发布于 2023-03-28 21:14 北京
m
点赞 回复 分享
发布于 2023-03-28 21:13 广东

相关推荐

评论
2
14
分享

创作者周榜

更多
牛客网
牛客企业服务