测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41024. 三角形

填空题 中等

题目描述

三角形

题目描述

7 

3 8 

8 1 0 

2 7 4 4 

4 5 2 6 5 

上述表示一个5行的数字三角形。假设给定一个n行数字三角形,计算出从三角形顶至底的一条路径,使该路径经过的数字总和最大。 

每一步只能由当前位置向左下或右下。

输入格式

你的程序要能接受标准输入。第一行包含一个整数T,表示总的测试次数。 

对于每一种情况:第一行包含一个整数N,其中1 < N < 100,表示三角形的行数。 

接下来的N行输入表示三角形的每一行的元素Ai,j,其中0 < Ai,j < 100。

输出格式

输出每次测试的最大值并且占一行。

样例输入

1 

5 

7 

3 8 

8 1 0  

2 7 4 4 

4 5 2 6 5

样例输出

30

参考答案

#include <iostream> using namespace std; int Max(int a,int b); int main() { int dp[100][100],num,x,t=0,t1=0; cin>>num; while (num--) { cin>>x; for (;t<x;t++) { for (t1=0;t1<=t;t1++) cin>>dp[t][t1]; } for (t=x-2;t>=0;t--)/*换层循环,层数向上增加*/ { for (t1=0;t1<=t;t1++)/*每一行求最优*/ dp[t][t1]=dp[t][t1]+Max(dp[t+1][t1+1],dp[t+1][t1]);/*从下向上开始查找,逐步找最优解*/ } t=0; t1=1; cout<<dp[0][0]<<endl; } return 0; } int Max(int a,int b) { return a>b?a:b; }
上一题 下一题