标签:des style class blog c code
1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 7 main() 8 { 9 int map[110][110], n, m, i, j, dp1[110], dp2[110]; 10 int t, k=1; 11 scanf("%d",&t); 12 while(t--) 13 { 14 scanf("%d %d",&n,&m); 15 for(i=1;i<=n;i++) 16 { 17 for(j=1;j<=m;j++) 18 scanf("%d",&map[i][j]); 19 } 20 21 for(i=1;i<=n;i++) //第一列只能由上面的点到达 22 map[i][1]+=map[i-1][1]; 23 24 for(j=2;j<=m;j++) //枚举每一列 25 { 26 dp1[n+1]=dp2[n+1]=dp1[0]=dp2[0]=-9999999; 27 28 for(i=1;i<=n;i++) //从上到下和从左到右最小的放在dp1中 29 dp1[i]=max(dp1[i-1],map[i][j-1])+map[i][j]; 30 for(i=n;i>=1;i--) // 从下到上和从左到右最小的放在dp2中 31 dp2[i]=max(dp2[i+1],map[i][j-1])+map[i][j]; 32 33 for(i=1;i<=n;i++) //更新该列的每个点 34 map[i][j]=max(dp1[i],dp2[i]); 35 } 36 37 printf("Case #%d:\n%d\n",k++,map[1][m]); 38 } 39 }
标签:des style class blog c code
原文地址:http://www.cnblogs.com/qq1012662902/p/3750193.html