题解 | 删除相邻数字的最大分数

删除相邻数字的最大分数

https://www.nowcoder.com/practice/3bcf72c738b6494bbe1ebe0ffde56152

import sys


# 分析: 当从小到达处理数字的时候, 计算当数组包含 0~i,考虑到数字i的时候,其只和i-1和i-2有关
# 即,当数组只包含0~i个数的时候的最高分dp[i],其最高分要么是我选择了第i个数,要么没选
# 如果选择了第i个数 dp[i] = dp[i-2] + i * count[i], 因为选了i,所以i-1不能选,和i-2有关
# 如果没选第i个数,dp[i] = dp[i-1], 并且因为选择数有得分,即dp[i]肯定>dp[i-2],所以保证最优子结构

n = int(input())

nums = list(map(int,input().strip().split()))

max_num = max(nums)
counter = [0] * (max_num+1)
for num in nums:
    counter[num] += 1

dp = [0] * (max_num+1)

for i in range(1,max_num+1):
    dp[i] = max(dp[i-2]+i*counter[i],dp[i-1])

print(dp[max_num])

全部评论

相关推荐

2024-11-28 21:33
广东工业大学 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-17 11:44
你在各大软件投了一份又一份,你打招呼的hr一个接一个,但是只要你投过的,很快就下线了,没关系你的能量是很强,你看过的岗位招到人的速度都增加了。朋友们一个个拿着丰厚的实习回报,你却默默在家刷新邮箱,等待着那寥寥无几的面试通知。你每天一睁眼就狂投简历,你一有面试邀约就点确认。过年亲戚们围坐聊天,谈论着他们孩子的职场成就,你试图插话说自己面试过的公司数量,但他们显然不太感兴趣。你在心里自嘲,觉得他们不懂面试的艰辛、不懂得每一次面试机会的珍贵,不懂得一张张精心准备的简历背后的努力。笑你那个小侄子只会在网上刷刷职位,而你已经是各大招聘网站的常客。亲戚们夸赞自己孩子一年的成就,儿子的新工作,女儿的晋升,而...
龚新化:这帖删了呗,这跟我朋友有点相似,不过我是无所谓的😀,没什么感觉,我不轻易破防的,但是我一个朋友可能有点汗流浃背了😕,他不太舒服想睡了,当然不是我哈,我一直都是行的,以一个旁观者的心态看吧,也不至于破防吧😃,就是想照顾下我朋友的感受,他有点破防了,还是建议删了吧😯,当然删不删随你,因为我是没感觉的,就是为朋友感到不平罢了🥺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务