60 求调
查看原帖
60 求调
1073652
sunwhite楼主2024/9/1 13:26
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
const int M = 1005;
int dp[N][M];
int p[N][N];//第i天第j纪念品的价格
int w[N], c[N]; 
int main(){
	int t, n, m;
	cin >> t >> n >> m;
	for(int i = 1; i <= t; i++){
		for(int j = 1; j <= n; j++){
			cin >> p[i][j];
		}
	}//输入完毕 
	for(int i = 1; i < t; i++){
		for(int j = 1; j <= n; j++){
			w[j] = p[i][j];//进价
			c[j] = p[i + 1][j] - p[i][j];//差值 
			for(int k = 1; k <= n; k++){//物品 
				for(int l = 1; l <= m; l++){//重量 
					if(l < w[k]){
						dp[k][l] = dp[k - 1][l];
					}else{
						int num1, num2;
						num1 = dp[k - 1][l];
						num2 = dp[k][l - w[k]] + c[k];
						dp[k][l] = max(num1, num2);
					}
				}
			}
		}
		m += dp[n][m];//总钱数增加相邻两天多赚到的最大币数 
	}	
	cout << m;	
	return 0;
} 
2024/9/1 13:26
加载中...