1 solutions

  • 0
    @ 2025-9-9 21:32:49

    很简单的DP

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int NR=51;
    int a[NR][NR],f[NR][NR][NR][NR];
    int main()
    {
    	int n,m,i,j,k,l;
    	cin>>m>>n;
    	for(i=1;i<=m;i++)
    		for(j=1;j<=n;j++) cin>>a[i][j];
    	for(i=1;i<=m;i++)
    		for(j=1;j<=n;j++)
    			for(k=1;k<=m;k++)
    				for(l=1;l<=n;l++)
    				{
    					f[i][j][k][l]=max(max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]),max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]));
    					if(i==k && j==l) f[i][j][k][l]+=a[i][j];
    					else f[i][j][k][l]+=a[i][j]+a[k][l];
    				}
    	cout<<f[m][n][m][n];
    	return 0;
    }
    
    • 1

    Information

    ID
    6
    Time
    1000ms
    Memory
    125MiB
    Difficulty
    4
    Tags
    # Submissions
    6
    Accepted
    4
    Uploaded By