首页 > 携程2021春招第二题 (3-4)
头像
只有更坑,没有最坑
编辑于 2021-03-04 22:29
+ 关注

携程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];
    }
}

全部评论

(5) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐