線性動態規劃

2021-10-21 17:57:16 字數 1171 閱讀 1540

方格取數

題目

提交記錄

討論題解

設有 n×n 的方格圖,我們在其中的某些方格中填入正整數,而其它的方格中則放入數字0。如下圖所示:

2.gif

某人從圖中的左上角 a 出發,可以向下行走,也可以向右行走,直到到達右下角的 b 點。

在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。

此人從 a 點到 b 點共走了兩次,試找出兩條這樣的路徑,使得取得的數字和為最大。

輸入格式

第一行為乙個整數n,表示 n×n 的方格圖。

接下來的每行有三個整數,第乙個為行號數,第二個為列號數,第三個為在該行、該列上所放的數。

行和列編號從 1

開始。一行「0 0 0」表示結束。

輸出格式

輸出乙個整數,表示兩條路徑上取得的最大的和。

資料範圍

n≤10

輸入樣例:

82 3 13

2 6 6

3 5 7

4 4 14

5 2 21

5 6 4

6 3 15

7 2 14

0 0 0

輸出樣例:

#include

#include

#include

using

namespace std;

const

int n=22;

//開到12會顯示溢位,目前不知道什麼原因

int w[n]

[n];

int f[n]

[n][n]

;int

max4

(int a,

int b,

int c,

int d)

intmain()

// 分兩種情況:上三角形和下三角形

for(

int k=

2;k<=n+

1;k++

)else}}

}for

(int k=n+

2;k<=

2*n;k++

)else}}

} cout<2*n]

[n][n]

;return0;

}

線性動態規劃

準確來說,動態規劃是一種思想,而不是一種演算法。算導裡將它歸結為 高階程式設計技巧。線性dp最常見的有 子集和問題,lis問題,lcs問題。拓展之後有 子段和問題,雜類問題。子集和問題的乙個例項 s,t 其中,s 是乙個正整數的集合,c是乙個正整數。子集和問題判定是否存在s的乙個子集s1,使得s1中...

動態規劃 線性DP

線性dp 即線性動態規劃,不侷限於 線性時間複雜度 的一維動態規劃。與數學中的 線性空間 類似,如果乙個動態規劃演算法的 狀態 包含多個維度,但在每個維度上都具有 線性 變化的 階段 那麼該動態規劃演算法同樣稱為 線性dp 在這類問題中,需要計算的物件表現出明顯的維度以及有序性,每個狀態的求解直接構...

動態規劃線性Dp LCS LIS

longest common subsequence 原題鏈結 給定兩個長度分別為n和m的字串a和b,求既是a的子串行又是b的子串行的字串長度最長是多少。輸入格式 第一行包含兩個整數n和m。第二行包含乙個長度為n的字串,表示字串a。第三行包含乙個長度為m的字串,表示字串b。字串均由小寫字母構成。輸出...