题目大意:
有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数,如图
1
3 2
4 10 1
4 3 2 20
从第一行的数开始,每次可以往左下或右下走一格,直到走到最下行,把沿途经过的数全部加起来,如何走才能使得这个和尽量大、
#include <cstdio> #include <iostream> using namespace std; const int MAX = 1001; int data[MAX][MAX]; int main(int argc, char** argv) { int tc, T; //freopen("sample_input.txt", "r", stdin); cin >> T; int row; for (tc = 0; tc < T; tc++) { cin >> row; for (int i = 0; i < row; i++) { for (int j = 0; j <= i; j++) { cin >> data[i][j]; } } for (int i = row - 2; i >= 0; i--) { for (int j = 0; j <= i; j++) { data[i][j] += data[i + 1][j] > data[i + 1][j + 1] ? data[i + 1][j] : data[i + 1][j + 1]; } } cout << data[0][0]<<endl; } return 0;//Your program should return 0 on normal termination. }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-06 12:39:15