#yyds干货盘点# 动态规划专题:删除相邻数字的最大分数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 动态规划专题:删除相邻数字的最大分数相关的知识,希望对你有一定的参考价值。
1.简述:
给定一个长度为 n 的仅包含正整数的数组,另外有一些操作,每次操作你可以选择数组中的任意一个元素 ,同时数组中所有等于 和 的元素会被全部移除,同时你可以得到 分,直到所有的元素都被选择或者删除。请你计算最多能得到多少分。数据范围: 数组长度满足 ,数组中的元素大小都满足
第一行输入一个正整数 n 表示数组的长度
第二行输入 n 个数字表示数组的各个元素值。
输出能得到的最大分数。
输入:
2
1 2
输出:
2
直接选择元素 2 ,然后 1 被同时移除。
输入:
3
1 2 3
输出:
4
先选择 3 ,同时 2 被移除,再选择 1 ,即得到 4 分。
输入:
9
1 2 1 3 2 2 2 2 3
输出:
10
第一步选择一个 2 ,然后所有 1 和 3 都被移除了,此时数组中剩下的是 [2,2,2,2] ,依次选择他们即可得到 10 分
2.代码实现:
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
int[] p = new int[n];
for (int i = 0; i < n; i++)
p[i] = reader.nextInt();
int[] dp = new int[10001];
int[] trans = new int[10001];
for (int i = 0; i < p.length; i++)
trans[p[i]] += p[i];
dp[0] = 0;
dp[1] = trans[1];
for (int i = 2; i < trans.length; i++)
dp[i] = Math.max(dp[i - 1], dp[i - 2] + trans[i]);
System.out.println(dp[dp.length - 1]);
以上是关于#yyds干货盘点# 动态规划专题:删除相邻数字的最大分数的主要内容,如果未能解决你的问题,请参考以下文章