题目链接~http://acm.hdu.edu.cn/showproblem.php?pid=2084

题意很简单,但是只能走相连的,要注意

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 #define max(a,b) (a>b?a:b)
 8 
 9 int dp[110][110];
10 int map[110][110];
11 
12 int main()
13 {
14   int t,i,j,n;
15   scanf("%d",&t);
16   while(t--)
17   {
18      scanf("%d",&n);
19      memset(map,0,sizeof(map));
20      memset(dp,0,sizeof(dp));
21      for(i=1;i<=n;i++)
22          for(j=1;j<=i;j++)
23             scanf("%d",&map[i][j]);
24 
25      for(i=n;i>=1;i--)
26          for(j=1;j<=i;j++)
27          { 
28              dp[i][j]=max(dp[i][j],max(dp[i+1][j]+map[i][j],dp[i+1][j+1]+map[i][j]));
29             
30          }
31        printf("%d\n",dp[1][1]);
32 
33   }
34   return 0;
35 }