Problem-F

来源:互联网 发布:阿里云过户域名流程 编辑:程序博客网 时间:2024/04/29 15:03

概述:现在有一个数塔,要从顶层走到底层,问走过的数的和最大是多少。

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

#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;}}


0 0