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

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

    // dp[i][j] represents the maximum profit with j machines for the first i companies
    vector<vector<int>> dp(N + 1, vector<int>(M + 1, 0));
    for (int i = 1; i <= N; i++) {
        for (int j = 0; j <= M; j++) {
            for (int k = 0; k <= j; k++) {
                dp[i][j] = max(dp[i][j], dp[i - 1][j - k] + profits[i - 1][k]);
            }
        }
    }

    cout << dp[N][M] << endl;

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

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

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