问题描述:给定一个由n行数字组成的数字三角形,试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 数字三角形如下所示:
输入示例: 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输出: 30
#include
<iostream
>
using namespace std
;
int
main()
{
int t
[100][100] = { 0 };
int n
;
cin
>> n
;
for (int i
= 0; i
< n
; i
++) {
for (int j
= 0; j
< i
+ 1; j
++)
cin
>> t
[i
][j
];
}
for (int i
= n
-2; i
>=0; i
--) {
for (int j
= n
- 2; j
>=0; j
--)
{
t
[i
][j
] = max((t
[i
][j
] + t
[i
+ 1][j
]), (t
[i
][j
] + t
[i
+ 1][j
+ 1]));
}
}
cout
<< t
[0][0]<<endl
;
return 0;
}