acwing 898數字三角形(區間dp)

2021-09-27 11:55:18 字數 1541 閱讀 3009

給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。

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]=

max(dp[i -1]

[j -1]

+ tr[i]

[j], dp[i -1]

[j]+ tr[i[j]

)//注意理解

ac的**

#include

using

namespace std;

const

int n =

501,inf=

0x3f3f3f3f

;int tr[n]

[n];

int dp[n]

[n];

intmain()

for(

int i =

0; i <= n; i ++

)for

(int j =

0; j <= i +

1; j ++

) dp[i]

[j]=

-inf;

dp[1]

[1]=tr[1]

[1];

for(

int i =

2;i<=n;i++

)for

(int j =

1; j <= i; j ++

) dp[i]

[j]=

max(dp[i -1]

[j -1]

+ tr[i]

[j], dp[i -1]

[j]+ tr[i]

[j])

;for

(int i=

1;i<=n;i++

) res=

max(res,dp[n]

[i])

;

cout

}

AcWing898 數字三角形

1.題目描述 給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5輸入格式 第一行包含整數n,表示數字三角形的層數。接下來n行,每行...

acwing 898 數字三角形

給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5輸入格式 第一行包含整數 n,表示數字三角形的層數。接下來 n 行,每行包含若干...

Day3 開啟 acwing 898 數字三角形

題目 給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5輸入格式 第一行包含整數n,表示數字三角形的層數。接下來n行,每行包含若干...