题目链接~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 }