#90pts求助,第一个点是什么啊#
查看原帖
#90pts求助,第一个点是什么啊#
125212
Skies楼主2020/11/11 16:53

记录

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e3+10;
int n,m;
int f[N][N][2];
int a[N][N];

signed main()
{
	
	cin>>n>>m;
	if(n==0||m==0)
	{
//		cout<<0;
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			scanf("%lld",&a[i][j]);
			
		}
		
	}
	for(int i=0;i<=n+1;i++)
	 for(int j=0;j<=m+1;j++)
	 f[i][j][1]=f[i][j][0]=-50000000000;
	 
	f[1][1][1]=f[1][1][0]=a[1][1];
	for(int j=1;j<=m;j++)
	{
		for(int i=1;i<=n;i++)
		{
//			f[i][j][0]=max(f[i][j][0],max(f[i][j-1][0],max(f[i][j-1][1],f[i+1][j][0]) ) )+a[i][j];
//			f[i][j][1]=max(f[i][j][1],max(f[i-1][j][1],max(f[i][j-1][0],f[i][j-1][1]) ) ) +a[i][j];
			if(i==1&&j==1)continue;
			
			
			f[i][j][1]=max(max(f[i-1][j][1],max(f[i][j-1][0],f[i][j-1][1]) ),f[i][j][1]) +a[i][j];
		}
		for(int i=n;i>=1;i--)
		{
			f[i][j][0]=max(f[i][j][0],max(f[i+1][j][0],max(f[i][j-1][1],f[i][j-1][0]) )) +a[i][j];
			
		}
		
		
	}
	cout<<f[n][m][1];
	
	
	
	
	
	
	
	return 0;
}
2020/11/11 16:53
加载中...