8.27 京东java笔试 代码

头一回ac。。。,纪念一下
第一题,求由只由2 3 5组成数,从小到大第n个
public class P1 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int[] dp = new int[1100];
        dp[1] = 2;
        dp[2] = 3;
        dp[3] = 5;
        LinkedList<Integer> queue = new LinkedList<>();
        queue.add(2);
        queue.add(3);
        queue.add(5);
        for (int i=4; i<=1000; ) {

            LinkedList<Integer> newQueue = new LinkedList<>();
            while (queue.size() > 0) {
                if (i > 1000)
                    break;
                Integer j = queue.removeFirst();
                dp[i++] = j*10+2;
                dp[i++] = j*10+3;
                dp[i++] = j*10+5;
                newQueue.add(j*10+2);
                newQueue.add(j*10+3);
                newQueue.add(j*10+5);
            }
            queue = newQueue;
        }
        while (scanner.hasNextInt()) {

            int n = scanner.nextInt();
            System.out.println(dp[n]);
        }
    }
}
第二题,滚小球,dp,自下向上
public class P2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int n = scanner.nextInt();
            int[][] arr = new int[n][2*n-1];
            for (int i=0; i<n; i++) {
                for (int j=n-1-i; j<=n-1+i; j++) {
                    arr[i][j] = scanner.nextInt();
                }
            }

            int[][] dp = new int[n][2*n-1];
            for (int i=0; i<2*n-1; i++) {
                dp[n-1][i] = arr[n-1][i];
            }

            for (int i=n-2; i>=0; i--) {
                for (int j=n-1-i; j<=n-1+i; j++) {
                    dp[i][j] = Math.max(Math.max(dp[i+1][j-1], dp[i+1][j]), dp[i+1][j+1]) + arr[i][j];
                }
            }
            System.out.println(dp[0][n-1]);
        }
    }
}



#京东##笔试题目#
全部评论

相关推荐

10-14 21:44
门头沟学院 Java
九门空城:10000月薪+1500房补+中午20餐补+晚饭免费 上下班班车免费通勤 就问你来不来吧
投递京东等公司10个岗位
点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务