65分?
查看原帖
65分?
564694
_5t0_0r2_楼主2022/7/27 16:10
#include<bits/stdc++.h>
using namespace std;
int t,n,m,ans;
const int N = 105;
int dp[N * N],p[N][N];
int main(){
	scanf("%d%d%d", &t, &n, &m);
	ans = m;
	for(int i = 1;i <= t;i++)
		for(int j = 1;j <= n;j++)
			scanf("%d", &p[i][j]);
	for(int i = 1;i < t;i++){
		memset(dp, pow(2,31) - 1,sizeof(dp));
		dp[ans] = ans;
		for(int j = 1;j <= n;j++)
			for (int k = ans; k >= p[i][j]; --k)
			    dp[k - p[i][j]] = max(dp[k - p[i][j]], dp[k] + p[i + 1][j] - p[i][j]);
		int Max = 0;
		for(int j = 1;j <= ans;j++)
			if(dp[j] > Max)
				Max = dp[j];
		ans = Max;
	}
	printf("%d", ans);
	return 0;
}
2022/7/27 16:10
加载中...