7
3 8
8 1 0
2 7 4 4
寻求从顶部到底部的一个路径,使得路径上的数字的和最大。不必给出具体路径。
三角形行数大于1小于100
数字为0~99;
emmmmm我也是初学就直接贴代码吧
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
while(cin >> n)
{
int a[n][n];
int *rom;
//设定一个指针用于修改数字三角形最底层的数字
for(int i = 1;i <= n;++i)
{
for(int j = 1;j <= i; ++j)
{
cin >>a[i][j];
}
}
rom = a[n];
//指针rom指向数字三角形最底层
for(int i = n - 1;i >= 1; --i)
//由第二层数数字开始与底层的相加
for(int j = 1; j <= i;++j)
{
rom[j] = max(rom[j], rom[j + 1]) + a[i][j];
//底层相邻两个数取大的一个和上层的数相加,和存入两个数中靠前一个数组内存空间
//减少占用的空间
}
cout << rom[1] <<endl;
}
return 0;
}