#D0003. 【动态规划】删除并获得点数

【动态规划】删除并获得点数

Description

给你一个整数数组 nums ,你可以对它进行一些操作。

每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。

开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。

Input Format

第一行输入一个正整数N,1<=N<=10000,表示数组的长度

接下来的N个数字表示点数(1<= 点数 <= 10000),存放到nums数组的元素

Output Format

能获得的最大点数

3
3 4 2
6

解释:

删除 4 获得 4 个点数,因此 3 也被删除。

之后,删除 2 获得 2 个点数。总共获得 6 个点数。
6
2 2 3 3 3 4

9

解释:

删除 3 获得 3 个点数,接着要删除两个 2 和 4 。

之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。

总共获得 9 个点数。

Source

思码特OJ编程训练营 http://127.0.0.1