HDU-2084 数塔

动态规划 HDU-2084 数塔

题目链接:杭电2084
HDU-2084 数塔_第1张图片
题目大意:从上到下 每一步只能走向相邻的两个节点 问路径上的数的最大值

解题思路:从底往上走 因为最顶层只有一个节点 下层的两个比较大小大的加到上层 最后输出最高层的节点

代码块:

#include
#include
#include

using namespace std;

int  arr[105][105] = { 0 };
int dp[105][105] = { 0 };
int main() {
	int c;
	cin >> c;
	while (c--) {
		int n;
		cin >> n;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= i; j++) {
				cin >> arr[i][j];
			}
		}
		for (int j = 1; j <= n; j++) {
			dp[n][j] = arr[n][j];
		}
		for (int i = n - 1; i > 0; i--) {
			for (int j = 1; j <= i; j++) {
				dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + arr[i][j];
			}
		}
		cout << dp[1][1] << endl;
	}
	return 0;
}

你可能感兴趣的:(动态规划)