DP1線性動態規劃 題

2021-07-15 10:41:29 字數 3350 閱讀 5084

例4 lcs(最長公共子串行)

乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列。確切地說,若給定序列x=<>,若另一串行z=<>是x的子串行,是指存在乙個嚴格遞增的下標序列<>,使得對於所有j=1,2,…,k有

例如,序列z=

是序列x=

的子串行,相應的遞增下標序列為

<2,3,5,7>

給定兩個序列x和y

,當另一串行z既是

x的子串行又是

y的子串行時,稱

z是序列x和

y的公共子串行。例如,若x=和

y=,則序列是x

和y的乙個公共子串行,序列也是x

和y的乙個公共子串行。而且,後者是x和

y的乙個最長公共子串行,因為x和

y沒有長度大於

4的公共子串行。

最長公共子串行(lcs)

問題:給定兩個序列

x=<>和

y=<>,要求找出x和

y的乙個最長公共子串行。

輸入檔案:

第一行為乙個整數n(1≤n≤5000),表示

x序列的長度;

第二行為長度為n的x

序列;

第三行為乙個整數m(1≤m≤5000),表示

y序列的長度;

第四行為長度為m的y

序列。

輸出檔案:

x和

y序列的最長公共子串行的長度。

輸入樣例:

7

abcbdab

6

bdcaba

輸出樣例:

4

#4.

#include #define n 5010

using namespace std;

char a[n],b[n];

int s[n][n];

int main()

}printf("%d\n",s[n-1][m-1]);

return 0;

}

例3 合唱隊形(noip2004)

n位同學站成一排,**老師要請其中的(n-k)位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形:設k位同學從左到右依次編號為1,2,…,k,他們的身高分別為,,…,,則他們的身高滿足 (1≤i≤k)。

你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。

輸入檔案:

輸入檔案的第一行是乙個整數n(2≤n≤100),表示同學的總數。第一行有n個整數,用空格分隔,第i個整數ti(130≤ti≤230)是第i位同學的身高(厘公尺)。

輸出檔案:

輸出檔案包括一行,這一行只包含乙個整數,就是最少需要幾位同學出列。

輸入樣例:

8

186 186 150 200 160 130 197 220

輸出樣例:

4

資料規模:

對於50%的資料,保證有n≤20;

對於全部的資料,保證有n≤100。

#3.

#include using namespace std;

int main()}}

for(int j=i+1;j<=n;++j)

for(int i=1;ia[j])

}for(int i=1;i<=n;++i)

p[i]=1;

for(int i=2;i<=n;++i)

}printf("%d\n",p[n]);

return 0;

}

例1 求最長不下降子串行。

由n個不相同的整數組成的數列,記為:a(1),a(2),…,a(n)且a(i)≠a(j)(i≠j),例如,3,18,7,14,10,12,23,41,16,24.若存在i1

<i2

3<…e且有a(i1)2)<…e),則稱其為長度為e的不下降子串行。如上例中3,18,23,24就是乙個長度為4的不下降子串行,同時也有3,7,10,12,16,24長度為6的不下降子串行。程式要求,當原數列給出之後,求出最長的不下降子串行的資料個數。

輸入檔案:

第一行為n(1≤n≤5000),第二行為n個整數,之間用空格隔開。

輸出檔案:

最長的不下降子串行的資料個數。

輸入樣例:

10

3 18 7 14 10 12 23 41 16 24

輸出樣例:

6

#1.

#include #define n 5010

using namespace std;

int main()

for(int i=2;i<=n;++i)

}printf("%d\n",f[n]);

return 0;

}

動態規劃 線性DP 1

動態規劃演算法通常用於求解具有某種最優性質的問題。那它和貪心有區別嗎?當然有。不然叫動態規劃幹啥?幼兒園英語老師 dp是啥?小盆友 dog peppa pig 英語老斯 恩恩!真聰明!然而,你是小盆友嗎?如果是 如果不是,dp是d p 的縮寫。意思是動態規劃。聰明的bolt告訴你 是dynamic ...

DP1 動態規劃概述

計數求最大值最小值 求存在性 確定狀態 簡單的說,就是解動態規劃時需要開乙個陣列,陣列的每個元素f i 或者f i j 代表什麼,類似解數學題中,xyz代表什麼一樣,具體分為下面兩個步驟 轉移方程 根據子問題定義直接得到 初始條件和邊界情況 初始條件一般都是a 0 a 1 這種,多看看邊界條件主要是...

動態規劃10 數字DP1

在資訊學競賽中,有這樣一類問題 求給定區間中,滿足給定條件的某個d 進製數或 此類數的數量。所求的限定條件往往與數字有關,例如數字之和 指定數碼個數 數的大小 順序分組等等。題目給定的區間往往很大,無法採用樸素的方法求解。此時,我們就需要利用數字的性質,設計 log n 級別複雜度的演算法。解決這類...