#include <iostream>
#include <vector>
using namespace std;

int maxProfit(vector<vector<int>>& matrix, int N, int M) {
    vector<vector<int>> dp(N + 1, vector<int>(M + 1, 0));

    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= M; j++) {
            for (int k = 0; k <= j; k++) {
                dp[i][j] = max(dp[i][j], dp[i - 1][j - k] + matrix[i - 1][k]);
            }
        }
    }

    return dp[N][M];
}

int main() {
    int N, M;
    cin >> N >> M;

    vector<vector<int>> matrix(N, vector<int>(M, 0));
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            cin >> matrix[i][j];
        }
    }

    int max_profit = maxProfit(matrix, N, M);
    cout << max_profit << endl;

    return 0;
}
``
【动态规划】机器分配描述总公司拥有高效设备M台准备分给下属的N个分公司。各分公司若获得这些设备可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15N≤10。分配原则:每个公司有权获得任意数目的设备但总台数不超过设备数M。输入输入数据文件格式为:第一行有两个数第一个数是分公司数N第二个数是设备台数M。接下来是一个NM的矩阵表明了第 I个公司分配 J台

原文地址: https://www.cveoy.top/t/topic/hRTP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录