考试时间:2023-09-17 (两小时)    考试题型: 单选10题(3分/题) + 多选5题(6分/题) + 编程2题(20分/题)      P1   ​ 在荒野的大海上,有一群善良的海盗们,在他们的一次探险中,他们找到了一个神秘的环形岛屿,岛屿上隐藏着大量的宝藏,每个宝藏点都被标上了价值的数字,这些数字就是他们挖掘后可能获取的金币数量。然而,神秘的岛屿有一个诅咒,即任何相邻的两个宝藏点不能同时被挖掘,否则就会触发岛屿的防护机制,宝藏会消失。海盗们想要挖掘出尽可能多的宝藏,你能帮助他们找出应该挖掘哪些宝藏点吗?   输入描述   输入一系列数字,以空格隔开,表示环形岛屿上宝藏点的金币数量(因为是一个环形,所以第一个宝藏点和最后一个宝藏点是相邻的)。   输出描述   在满足规则,即不能连续挖掘两个相邻的宝藏点的基础上,算出挖掘的宝藏点的金币数量的最大值。   样例1   输入:1 2 3输出:3   样例2   输入:33 55 88 90 101输出:189   题解       动态规划      import java.util.ArrayList;import java.util.List;import java.util.Scanner;// P1public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        List<Integer> list = new ArrayList<>();        while (in.hasNextInt()) {            list.add(in.nextInt());        }        int max1 = solve(list.subList(0, list.size() - 1));        int max2 = solve(list.subList(1, list.size()));        System.out.println(Math.max(max1, max2));    }    public static int solve(List<Integer> list) {        int n = list.size();        int[][] dp = new int[n + 1][2];        for (int i = 0;                    
点赞 4
评论 1
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务