。
。
class Solution { public: int MAX[305][305]; int dp[15][305]; int minDifficulty(vector<int>& job, int d) { int n=job.size(); if(n<d)return -1; for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++)MAX[i][j]=max(MAX[i][j-1],job[j-1]); } memset(dp,0x3f3f3f,sizeof(dp)); dp[0][0]=0; for(int i=1;i<=d;i++){ for(int j=i;j<=n;j++){ for(int k=i-1;k<j;k++){ dp[i][j]=min(dp[i][j],dp[i-1][k]+MAX[k+1][j]); } } } return dp[d][n]; } };