系统会给定一串数字让玩家选择,如果玩家选中一个数字,比如M,那么玩家获得M分,但同时当前选中的M,以及这串数字中所有的M+1和M

系统会给定一串数字让玩家选择,如果玩家选中一个数字,比如M,那么玩家获得M分,但同时当前选中的M,以及这串数字中所有的M+1和M,第1张

系统会给定一串数字玩家选择,如果玩家选中一个数字,比如M,那么玩家获得M分,但同时当前选中的M,以及这串数字中所有的M+1和M

参考回答:

public class Select {public static void main(String[] args) {int[] a = {2,3,3,3,4};int max = 0;for(int i=0;i<a.length;i++) {if(max<a[i])max=a[i];}int[] num = new int[max+1];for(int i=0;i<a.length;i++) {num[a[i]]++;}System.out.println(maxSum(1,max,num));}public static int maxSum(int start, int end, int[] num){int[] sum = new int[end+1];sum[1] = num[1]*1;sum[2] = Max(num[1]*1,num[2]*2);sum[3] = Max((num[1]*1+num[3]*3),num[2]*2);for(int i=4;i<end+1;i++) {sum[i] = Max(num[i]*i+sum[i-2],num[i-1]*(i-1)+sum[i-3]);}return sum[end];}public static int Max(int m, int n){if(m>n)return m;else return n;}}

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/4879233.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-11
下一篇2022-11-11

发表评论

登录后才能评论

评论列表(0条)

    保存