#include <iostream>
#include <math.h>
using namespace std;
const int N = 550;
int a[N][N], ans = -5e6 - 10;
int main() {
int n;
cin >> n;
//用for循环输入三角形,并存入一个二维数组
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= i; j ++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= i; j ++) {
//第一列时候的情况
if (j == 1)
a[i][j] += a[i - 1][j];】
//从第二行开始的最后一列的情况
else if (j == i && i > 1)
a[i][j] += a[i - 1][j - 1];
//第一个数字就等于它自身
else if (i == 1 && j == 1)
a[i][j] += a[i][j];
//其他情况
else
a[i][j] += max(a[i - 1][j - 1], a[i - 1][j]);
}
}
//寻找路径中的最大值
for (int i = 1; i <= n; i ++) {
ans = max(ans, a[n][i]);
}
cout << ans;
return 0;
}
#555. 数字三角形(3月22日
最新推荐文章于 2024-07-12 18:56:03 发布