題目:
給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
輸入格式
第一行包含整數n,表示數字三角形的層數。
接下來n行,每行包含若干整數,其中第 i 行表示數字三角形第 i 層包含的整數。
輸出格式
輸出乙個整數,表示最大的路徑數字和。
資料範圍
1≤n≤500,
−10000≤三角形中的整數≤10000
輸入樣例:57
3 88 1 0
2 7 4 4
4 5 2 6 5
輸出樣例:
30思路:
dp【i】【j]表示從最後面走到i,j的方案總和;
屬性max最大值;
狀態計算:
dp【i】【j】劃分為從下面,和下面左邊2個走上了,這樣劃分不重複不遺漏;即dp[i][j]=dp[i+1][j]+dp[i+1][j+1];
初始化:
dp【n][i]=a[n][i];
順序從大到小
邊界1 1
**:
#include
using
namespace std;
int dp[
510]
[510];
int a[
510]
[510];
intmain()
}for
(int i=
1;i<=n;
++i)
for(
int i=n-
1;i>=0;
--i)
} cout<[1];
return0;
}
演算法 數字三角形(DP)
動態規劃 數字三角形 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。輸入有n 行 第 1 行是數字三角形的行數 n,1 n 100。接下來 n行是數字三角形各行中的數字。所有數字在0...
數字三角形
題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 25 三角形中的數字為整數 1000 輸入第一行為n,表示有n行 後面n行表示三角形每條路的路徑權 輸出路徑所經過的數字的總和最大的答案 樣...
數字三角形
description 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,...