c_cpp 数塔问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 数塔问题相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <algorithm>
using namespace std;

const int MAX_N = 1e3;
int f[MAX_N][MAX_N], dp[MAX_N][MAX_N];
int N;

int main() {
	cin >> N;
	for (int n = 1; n <= N; n++) {
		for (int j = 1; j <= n; j++) {
			cin >> f[n][j];
		}
	}
	/*
	for (int n = 1; n <= N; n++) {
		for (int j = 1; j <= n; j++) {
			cout << f[n][j] << " ";
		}
		cout << endl;
	}
	// */

	// boundary
	for (int j = 1; j <= N; j++) {
		dp[N][j] = f[N][j];
	}
	// state transition euqation
	for (int i = N - 1; i >= 1; i--) {
		for (int j = 1; j <= i; j++) {
			dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + f[i][j];
		}
	}

	cout << dp[1][1] << endl;
	return 0;
}

/*
Sample Input:
5
5
8 3
12 7 16
4 10 11 6
9 5 3 9 4
Sample Output:
44 (5 → 3 → 16 → 11 → 9)

Sample Input:
5
15
8 3
4 17 6
4 19 13 4
9 25 43 49 1
Sample Output:
102 (15 → 8 → 17 → 19 → 43)
*/

以上是关于c_cpp 数塔问题的主要内容,如果未能解决你的问题,请参考以下文章

HDU2084_数塔简单题数塔

数塔问题

数塔问题

7I - 数塔

动态规划----数塔问题

hdu 1176 dp 数塔问题