Zznu 1625
Detailed Links: http://blog.csdn.net/su20145104009/article/details/51277041
#include <cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<cctype>#include<algorithm>#include<vector>#include<queue>using namespacestd;#defineINF 0x3f3f3f3f#defineN 55intMaps[n][n];intDp[n][n][n][n];intMain () {intT, M, N; scanf ("%d", &T); while(t--) {scanf ("%d%d", &m, &N); for(intI=1; i<=m; i++) for(intj=1; j<=n; J + +) scanf ("%d", &Maps[i][j]); Memset (DP,0,sizeof(DP)); for(intI=1; i<=m; i++) for(intj=1; j<=n; J + +) for(intk=i+1; k<=m; k++) { intl=i+j-K; if(l<0|| L>n) Break; DP[I][J][K][L]=max (Max (dp[i-1][j][k][l-1], dp[i-1][j][k-1][l]), Max (Dp[i][j-1][k-1][l], dp[i][j-1][k][l-1])) +maps[i][j]+Maps[k][l]; } printf ("%d\n", Max (Max (dp[m-1][n][m][n-1], dp[m-1][n][m-1][n]), Max (Dp[m][n-1][m-1][n], dp[m][n-1][m-1][n]) +Maps[m][n]); } return 0;}
Dual-Thread DP