数字三角形
问题描述
(图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
●每一步可沿左斜线向下或右斜线向下走;
●1<三角形行数≤100;
●三角形中的数字为整数0,1,…99;
.
(图3.1-1)
输入格式
文件中首先读到的是三角形的行数。
接下来描述整个三角形
输出格式
最大总和(整数)
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出
30
#include<iostream>
#include<Vector>
using namespace std;
int getMax(int parent, int leftChild, int rightChild)
{
int tempLeft = parent + leftChild;
int tempRight = parent + rightChild;
return (tempLeft > tempRight) ? tempLeft : tempRight;
}
vector< vector<int> > getMaxSum( vector<vector<int> >data)
{
vector< vector<int> >result;
if (data.size() == 1)
{
result = data;
}
else
{
for (int i = data.size() - 2; i >= 0; i--)
{
data[data.size() - 2][i] = getMax(data[data.size() - 2][i], data[data.size() - 1][i], data[data.size()-1][i + 1]);
}
data.pop_back();
result = getMaxSum(data);
}
return result;
}
int main()
{
int n;
cin >> n;
vector< vector<int> > data(n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
int temp;
cin >> temp;
data[i].push_back(temp);
}
}
cout << getMaxSum(data)[0][0];
return 0;
}
本人目前是一枚CS专业大二学生,第一次写博客。之前在写程序,做项目的时候,经常网上求助,深知程序人员的不容易。最近蓝桥杯刚比完赛,没什么事,试着发一篇博客,尽自己的微薄之力,把自己在编程中遇到过的问题都写下来,在刷程序题的过程中有好的想法分享出来。另外,下面附上个人的github地址,请大家积极评星^ _ ^ ^ _ ^ …………
[1]: https://github.com/Thinking-X/