这个好神奇的评测姬!
查看原帖
这个好神奇的评测姬!
381935
xiaoshui楼主2022/9/16 10:52
#include <bits/stdc++.h>
using namespace std;
const int N=55;
int n,m,f[2*N][N][N],a[N][N];
int m,n,a[N][N],f[2*N][N][N];
int main()
{
    cin>>m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	memset(f,-1,sizeof(f));
	f[2][1][1]=0;
	
	for(int k=3;k<n+m;k++){
		for(int i=1;i<n;i++){
			for(int j=i+1;j<=n;j++){
				int s=max(f[k][i][j],max(f[k-1][i][j],max(f[k-1][i-1][j],max(f[k-1][i][j-1],f[k-1][i-1][j-1]))));
				if(s==-1)continue;
				f[k][i][j]=s+a[k-i][i]+a[k-j][j];
			}
		}
	}
	printf("%d",f[m+n-1][n-1][n]);
	return 0;
}

如果用第四行的定义就可以AC,用第五行的就会RE一半的点。我不理解有什么区别,求大佬指点/bx/bx/bx

2022/9/16 10:52
加载中...