noip08 年的题 看了看题解
1 #include2 #include 3 using namespace std; 4 int f[51][51][51][51]; 5 int a[51][51]; 6 int n,m; 7 int main() 8 { 9 cin>>n>>m;10 for(int i=1;i<=n;i++)11 {12 for(int j=1;j<=m;j++)13 {14 cin>>a[i][j];15 }16 }17 for(int i=1;i<=n;i++)18 {19 for(int j=1;j<=m;j++)20 {21 for(int k=1;k<=n;k++)22 {23 for(int l=1;l<=m;l++)24 {25 f[i][j][k][l]=max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]);26 f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k-1][l]);27 f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k][l-1]);28 f[i][j][k][l]+=(a[i][j]+a[k][l]);29 if(i==k&&j==l) 30 {31 f[i][j][k][l]-=a[i][j];32 }33 }34 }35 }36 }37 cout<
//刷了两个多进程的题 然鹅都不会......
关键是设计方程,深刻理解多进程的实现方式以及一切dp题的通用题解(由于所有状态我们都遍历了)