動態對話 單調遞增最長子序列

2021-06-21 16:10:51 字數 746 閱讀 1031

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

求乙個字串的最長遞增子串行的長度

如:dabdbf最長遞增子串行就是abdf,長度為4

輸入第一行乙個整數0

輸出輸出字串的最長遞增子串行的長度

樣例輸入

3

aaaababc

abklmncdefg

樣例輸出

1

37

這道題一看就是用的動態規劃:

首先進行分析,在這個序列中包含有很多子串行,可以通過遍歷去迴圈每個子串行(比如第i個字元及以前的所有字元是乙個子串行)。在每個子串行都可以通過前乙個子串行得到本子序列中最大的遞增長度。

然後,就可以列出動態規劃的方程式了:dp[i]=max(dp[i]),即如果滿足s[i-1]

#include #include using namespace std;

int main()

{ int n,max,i,j,dp[10000];

char s[10001];

cin>>n;

while(n--)

{ cin>>s;

int len=strlen(s);

dp[0]=1; //第乙個字元開始,則dp[0]=1

for(i=1;i=0;j--)

{if(s[i]>s[j] && maxs[j],並且max

動態規劃 單調遞增最長子序列

動態規劃 單調遞增最長子序列 時間限制 1 sec 記憶體限制 128 mb 求乙個字串的最長遞增子串行的長度 如 dabdbf最長遞增子串行就是abdf,長度為4 第一行乙個整數0輸出字串的最長遞增子串行的長度 3 aaaababc abklmncdefg 137 遞增子串行可以不是連續的。1 i...

動態規劃 單調遞增最長子序列

設計乙個o n2 時間的演算法,找出由n個數組成的序列的最長單調遞增子串行。輸入格式 輸入有兩行 第一行 n,代表要輸入的數列的個數 第二行 n個數,數字之間用空格格開 輸出格式 最長單調遞增子串行的長度 輸入樣例 5 1 3 5 2 9輸出樣例 4 定義乙個dp陣列,全部初始化為1,代表至少遞增子...

單調遞增最長子序列

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 求乙個字串的最長遞增子串行的長度 如 dabdbf最長遞增子串行就是abdf,長度為4 輸入第一行乙個整數0 輸出輸出字串的最長遞增子串行的長度 樣例輸入 3 aaaababc abklmncdefg 樣例輸出 1 37 經典題...