[leetcode] 1335. 工作计划的最低难度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int minDifficulty(vector<int>& jobDifficulty, int d) {
        int n = jobDifficulty.size();
        if(n < d)
        {
            return -1;
        }
        //dp[i][j]表示前i天完成前j项任务所需的最小难度,i、j都是从0开始数。
        vector<vector<int>>dp(d, vector<int>(n, INT_MAX/3));
        //
        dp[0][0] = jobDifficulty[0];
        for(int j = 1; j < n; j++)
        {//前i= 0(第0天)完成前j项任务所需的最小难度
            dp[0][j] = max(dp[0][j-1], jobDifficulty[j]);
        }
        //
        for(int i = 1; i < d; i++)
        {//前i天
            for(int j = i; j < n; j++) 
            {//前j项任务 
                int curMax = jobDifficulty[j];
                for(int k = j; k > i-1; k--)
                {//选择k将之前前i-1天的和今天完成的任务分成两段,[0, k-1]为前i-1天完成的任务,
                //  [k,j]为第i天完成的
                    curMax = max(curMax, jobDifficulty[k]);
                    dp[i][j] = min(dp[i][j], dp[i-1][k-1] + curMax);
                }
            }
        }
        return dp[d-1][n-1];
    }
};
参考:https://leetcode-cn.com/problems/minimum-difficulty-of-a-job-schedule/solution/dong-tai-gui-hua-ti-odn2shi-jian-kong-jian-ji-bai-/

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值