为什么f[i][0]不能从1开始
查看原帖
为什么f[i][0]不能从1开始
550898
xjx199楼主2024/5/15 17:41
#include<bits/stdc++.h>
#define int long long
const int mx=1001;
int n,m,a[mx][mx],f[mx][mx],up[mx][mx],down[mx][mx];
using namespace std;
signed 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(int j=1;j<=m;j++) {
		down[0][j]=up[n+1][j]=-1e10;
	}
	for(int i=1;i<=n;i++){
		f[i][0]=-1e10;
	}
	for(int j=1;j<=m;j++){
		for(int i=1;i<=n;i++){
			down[i][j]=max(f[i][j-1],down[i-1][j])+a[i][j];
		}
		for(int i=n;i>=1;i--){
			up[i][j]=max(f[i][j-1],up[i+1][j])+a[i][j];
		}
		for(int i=1;i<=n;i++){
			f[i][j]=max(up[i][j],down[i][j]);
		}
	}
	printf("%lld",f[n][m]);
}
2024/5/15 17:41
加载中...