【动态规划】机器分配时间限制5000MS内存限制64MB描述总公司拥有高效设备M台准备分给下属的N个分公司。各分公司若获得这些设备可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15N≤10。分配原则:每个公司有权获得任意数目的设备但总台数不超过设备数M。输入输入数据文件格式为:第一行有两个数第一个数是分公司数N第二个数是设备台数M。接下来是一个N
#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;
}
``
原文地址: https://www.cveoy.top/t/topic/hRT3 著作权归作者所有。请勿转载和采集!