https://www.acwing.com/problem/content/1165/
1063 完全背包应用问题+从前推后dp问题
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=10033,N=10005;
int f[M];
int g[N][N];
int t,n,m;
int main()
{
cin>>t>>n>>m;
for(int i=1;i<=t;i++)
for(int j=1;j<=n;j++)
cin>>g[i][j];
for(int i=1;i<t;i++)
{
memset(f,0,sizeof f);
for(int j=1;j<=n;j++)
if(g[i+1][j]>g[i][j])
for(int l=g[i][j];l<=m;l++)
f[l]=max(f[l],f[l-g[i][j]]+g[i+1][j]-g[i][j]);
m+=f[m];
}
cout<<m<<endl;
return 0;
}