蒟蒻救助CE
查看原帖
蒟蒻救助CE
262934
惟有泪千行楼主2020/9/27 09:37

RT

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 105
ll f[N][N],n,m,a[N][N],ans=-99999,pre[N][N];
inline void print(ll x,ll y){
	if(y==0)return;
	print(pre[x][y],y-1);
	cout<<x<<" ";
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			scanf("%lld",&a[i][j]);
		} 
	}
	for(ll i=1;i<=m;++i){
		for(int j=1;j<=min(i,n);++j){
			ll maxn=-99999;
			for(int k=j-1;k<i;++k){
				if(maxn<f[k][j-1]){
					maxn=f[k][j-1];
					pre[i][j]=k;
				}
			}
			f[i][j]=maxn+a[j][i];
		}
	}
	for(int i=n;i<=m;++i){
		ans=max(ans,f[i][n]);
	}
	cout<<ans<<endl;
	for(int i=n;i<=m;++i){
		if(ans==f[i][n]){
			print(i,n);
			return 0;
		}
	}
	return 0;
}

acwing提交通过。。。

2020/9/27 09:37
加载中...