Array Partition (k groups) for Sum or Average

這類題,dp數(shù)組總長(zhǎng)度要加1,表示前n個(gè)數(shù)的最優(yōu)值

·1043. Partition Array for Maximum Sum
https://leetcode.com/problems/partition-array-for-maximum-sum/

int maxSumAfterPartitioning(vector<int>& arr, int k) {
        int n = arr.size();
        vector<int> dp(n+1);
        for(int i=1; i<=n; ++i){
            int max_num = INT_MIN;
            for(int j=1; j<=k && i-j>=0; ++j){
                max_num = max(max_num, arr[i-j]);
                dp[i] = max(dp[i], dp[i-j] + max_num * j);
            }
        }
        
        return dp[n];
    }

·813. Largest Sum of Averages
https://leetcode.com/problems/largest-sum-of-averages/

double largestSumOfAverages(vector<int>& A, int K) {
        int n = A.size();
        vector<vector<double>> dp(n+1, vector<double>(K+1, 0.0));
        vector<double> sums(n+1, 0.0);
        
        for(int i=1; i<=n; ++i){
            sums[i] = sums[i-1] + A[i-1];
            dp[i][1] = (double)sums[i] / i;
        }
        
        for(int k=2; k<=K; ++k){
            for(int i=1; i<=n; ++i){
                for(int j=0; j<i; ++j){
                    dp[i][k] = max(dp[i][k], dp[j][k-1] + (sums[i] - sums[j]) / (i-j));
                }
            }
        }
        
        return dp[n][K];
    }

`410. Split Array Largest Sum
https://leetcode.com/problems/split-array-largest-sum/

int splitArray(vector<int>& nums, int m) {
        int n = nums.size();
        vector<vector<long>> dp(n+1, vector<long>(m+1, INT_MAX));
        vector<long> sums(n+1);
        for(int i=1; i<=n; ++i){
            sums[i] = sums[i-1] + nums[i-1];
        }
        
        for(int i=1; i<=n; ++i){
            dp[i][1] = sums[i];
        }
        
        for(int k=2; k<=m; ++k){
            for(int i=1; i<=n; ++i){
                for(int j=0; j<i; ++j){
                    dp[i][k] = min(dp[i][k], max(dp[j][k-1], sums[i] - sums[j]));
                }
            }
        }
        
        return dp[n][m];
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容