大疆8.16 软件类B卷 64 100 27

三道题分别A了64 100 27,还是太菜了
1. 图的最短路径,直接上迪杰斯特拉 A了64,不知道为什么。。求大佬指点
2. 经背包,直接AC
public class Main2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int bag = sc.nextInt();
        int i = 0, j = 0;
        int[] values = new int[N];
        int[] times = new int[N];
        while(N > 0) {
            values[i++] = sc.nextInt();
            times[j++] = sc.nextInt();
            N--;
        }

        System.out.println(maxValue(values, times, bag));
    }

    public static int maxValue(int[] values, int[] times, int bag) {
        int[][] dp = new int[times.length + 1][bag + 1];
        for (int i = times.length - 1; i >= 0; i--) {
            for (int j = bag; j >= 0; j--) {
                dp[i][j] = dp[i + 1][j];
                if (j + times[i] <= bag) {
                    dp[i][j] = Math.max(dp[i][j], values[i] + dp[i + 1][j + times[i]]);
                }
            }
        }
        return dp[0][0];
    }
}
3. 给定一个整数,去掉K位后使得留下的整数最小。时间不够了,直接暴力贪心的删除每一位,只过了27
public class Main3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String Snum = sc.next();
        int deLen = sc.nextInt();
        for (int i = 0; i < deLen; i++) {
            int len = Snum.length();
            for (int j = 0; j < len; j++) {
                if(Snum.charAt(j + 1) < Snum.charAt(j)) {
                    Snum = Snum.substring(0, j) + Snum.substring(j + 1);
                    break;
                }
            }
        }
        Integer num = Integer.parseInt(Snum);
        if (num == 0) {
            System.out.println(0);
        } else {
            System.out.println(Snum);
        }

    }
}


#大疆##笔试题目#
全部评论
无向图
点赞 回复 分享
发布于 2020-08-16 21:28
第一题 无向图 对称的也赋值
点赞 回复 分享
发布于 2020-08-16 22:26
楼主,背包问题是什么🤣菜鸡不懂这个名词
点赞 回复 分享
发布于 2020-08-18 10:05

相关推荐

10-25 00:32
点赞 评论 收藏
分享
10-29 07:51
已编辑
泰山学院 Java
双非鼠不想认输:二本有阿里的实习吗?这不是乱杀
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务