题目大意:
...就是数塔
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
7+3+8+7+5=30
Sample Input
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
2
1
2 3
Sample Output
30
4
DP水题 记录一下
自下往上走 左右始终选择较大的与之上的相加
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<cstring>
using namespace std;
int dp[][];
int main()
{
int t;
while(~scanf("%d",&t))
{
memset(dp,,sizeof(dp));
for(int i=;i<=t;i++)
for(int j=;j<=i;j++)
scanf("%d",&dp[i][j]);
for(int i=t-;i>=;i--)
for(int j=;j<=i;j++)
dp[i][j]+=max(dp[i+][j],dp[i+][j+]);
printf("%d\n",dp[][]);
} return ;
}