WA20pts求助
查看原帖
WA20pts求助
787031
UKE_Piu楼主2024/12/17 13:41
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e3+3,inf=1145140000;
int a[N][N],f[N][N];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) 
	  for(int j=1;j<=m;j++) {
	  	cin>>a[i][j];
	  	f[i][j]=-inf;
	  }
/*	f[n/2][1]=a[n/2][1];
	f[n/2-1][1]=a[n/2-1][1];
	f[n/2+1][1]=a[n/2+1][1];	
*/
	for(int i=1;i<=n+1;i++)
	  for(int j=max(m/2-i,1);j<=min(m/2+i,m);j++){
	  	f[i][j]=max(f[i][j],f[i-1][j]+a[i][j]);
	  	if(j>max(m/2-i+1,1)) f[i][j]=max(f[i][j],f[i-1][j-1]+a[i][j]);
	  	if(j<min(m/2+i-1,m)) f[i][j]=max(f[i][j],f[i-1][j+1]+a[i][j]);
	  }
/*	for(int j=1;j<=m;j++)
	  for(int i=max(n/2-j,1);i<=min(n/2+j,n);i++){
	  	f[i][j]=max(f[i][j],f[i][j-1]+a[i][j]);
	  	if(i>max(n/2-j+1,1)) f[i][j]=max(f[i][j],f[i-1][j-1]+a[i][j]);
	  	if(i<min(n/2+j-1,n)) f[i][j]=max(f[i][j],f[i+1][j-1]+a[i][j]);
	  }
*/
	cout<<f[n+1][m/2+1];
	
	return 0;
}


/*
6 7

0  16  4   3   12  6   0   3
0  4  -5   6   7   0   0   2
0  6   0  -1  -2   3   6   8
0  5   3   4   0   0  -2   7
0 -1   7   4   0   7  -5   6
0  0  -1   3   4   12  4   2




*/
2024/12/17 13:41
加载中...