https://blog.csdn.net/Recursions/article/details/117737536
和好几个月前题目类似
稍微变动
easy
题目描述
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<bits/stdc++.h>
using namespace std;
int arr[101][101];
int main()
{
int T,n;
cin >> T;
while(T--)
{
cin >> n;
for(int i = 0;i < n;i++)
for(int j = 0;j <= i;j++)
cin >> arr[i][j];
for(int i = n - 2;i >= 0;i--)
for(int j = 0;j <= i;j++)
arr[i][j] += max(arr[i + 1][j],arr[i + 1][j + 1]);
cout << arr[0][0] << endl;
}
system("pause");
}