tj
2025-09-08 12:37:42
发布于:福建
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
//完全背包问题
//m作为背包总容量,今天的价格当做背包容量,明日价格当做物品的价值
//dp[i] = j用i元钱去购买商品所能盈利的(去除成本)最大值
const long long N = 1e2 + 10;
const long long M = 1e4 + 10;
long long dp[M];
long long t , n , m , a[N][N];
int main( ) {
cin >> t >> n >> m;
for (int i = 1 ; i <= t ; i++) {
for (int j = 1 ; j <= n ; j++) {
cin >> a[i][j];
}
}
for (int k = 1 ; k < t ; k++) {
memset(dp , 0 , sizeof dp);
for (int i = 1 ; i <= n ; i++) {
for (int j = a[k][i] ; j <= m ; j++) {
dp[j] = max(dp[j] , dp[j - a[k][i]] + a[k + 1][i] - a[k][i]);
}
}
m += dp[m];
}
cout << m << endl;
return 0;
}
这里空空如也
有帮助,赞一个