您的位置:首页 > 其它

Problem-F

2016-05-07 16:09 204 查看
概述:现在有一个数塔,要从顶层走到底层,问走过的数的和最大是多少。

思路:作为动态规划的题目,这个题在推理时明显是从最底层开始,走向最顶层,这样从最底层的某一个开始,想倒数第二层走,将每个最底层的数字加到倒数第二层,求最大的数字,然后再向上走,直到到顶层,就是所求的最大数。

#include<iostream>
#include<stdio.h>
#include<fstream>
using namespace std;

int max(int a, int b)
{
if (a > b)
return a;
else return b;
}

int main()
{
//ifstream cin("in.txt");
int T,n;
int sum[101][101];
cin >> T;
while (T--)
{
cin >> n;
for (int i = 0;i < n;i++)
{
for (int j = 0;j <= i;j++)
cin >> sum[i][j];
}
for (int i = n - 1;i >= 1;i--)
{
for (int j = 0;j < i;j++)
sum[i-1][j] = max(sum[i][j]+sum[i - 1][j],sum[i][j+1]+sum[i-1][j]);
}
cout << sum[0][0] << endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: