题解 | 删除相邻数字的最大分数
删除相邻数字的最大分数
https://www.nowcoder.com/practice/3bcf72c738b6494bbe1ebe0ffde56152
import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); int[] data = new int[a]; Map<Integer,Integer> dpTree = new HashMap<>(); Integer max = 0; for (int i=0;i<data.length;i++) { data[i] = in.nextInt(); dpTree.put(data[i],dpTree.getOrDefault(data[i], 0) + data[i]); max = Math.max(max,data[i]); } int[] dp = new int[max+1]; for (int i=0;i<= max;i++) { if (i == 0) { dp[i] = dpTree.getOrDefault(i, 0); continue; } if (i == 1) { dp[i] = Math.max(dpTree.getOrDefault(0, 0),dpTree.getOrDefault(1, 0) ); continue; } dp[i] = Math.max(dp[i-1], dp[i-2] + dpTree.getOrDefault(i, 0)); } System.out.println(dp[max]); } } }