携程2021春招第二题 (3-4)

public class RedPacket {
    public static void main(String[] args) {
        int res = splitArray(new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9}, 6);
        System.out.println(res);
    }
    public static int splitArray(int[] nums, int m) {
        int len = nums.length;

        int[][] dp = new int[len + 1][m + 1];

        for (int i = 0; i <= len; i++) {
            dp[i][0] = 0;
        }

        for (int i = 0; i <= m; i++) {
            dp[0][i] = 0;
        }
        int[][] sum = new int[len + 1][len + 1];

        for (int i = 0; i <= len; i++) {
            sum[i][0] = 0;
            sum[0][i] = 0;
        }

        for (int i = 1; i <= len; i++) {
            for (int j = 1; j <= i; j++) {
                if (i == j) {
                    sum[i][j] = nums[i - 1];
                } else {
                    sum[i][j] = sum[i - 1][j] + nums[i - 1];
                }
            }
        }

        for (int i = 1; i <= len; i++) {
            dp[i][1] = sum[i][1];
        }

        for (int i = 2; i <= len; i++) {
            int temp = Math.min(i, m);
            for (int j = 2; j <= temp; j++) {
                dp[i][j] = 0;
                for (int k = j - 1; k < i; k++) {
                    dp[i][j] = Math.max(dp[i][j], Math.min(dp[k][j - 1], sum[i][k + 1]));
                }
            }
        }
        return dp[len][m];
    }
}

#携程#
全部评论
思路
点赞 回复
分享
发布于 2021-03-04 22:32
mark
点赞 回复
分享
发布于 2021-03-04 23:53
春招专场
校招火热招聘中
官网直投
牛逼 我只写出来第一题
点赞 回复
分享
发布于 2021-03-05 00:39
mark
点赞 回复
分享
发布于 2021-03-05 16:35
我只写出第二题
点赞 回复
分享
发布于 2021-03-15 18:54

相关推荐

2 5 评论
分享
牛客网
牛客企业服务