C語言實現最長遞增子串行問題的解決方法

2022-10-04 04:18:07 字數 553 閱讀 9063

問題描述:

給定乙個序列,找出其最長遞增子串行長度。

比如 輸入 1 3 7 5

輸出 3

演算法解決思路:

利用動態規劃的思想,以序列的每個點最為最右端,找出每個點作程式設計客棧為最右端時的子串行長度的最大值,即問題的求解。因此,在計算前面的每個點的時候,將其結果儲存下來,後面的點與前面的點的數值進行比較,如果大,則在其長度基礎上加1,並且找出所有可能情況下最長的儲存為當前點的長度。形成遞迴。

具體實現**如下:

#include "stdio.h"

#include "stdlib.h"

#define maxdata 10000

int main()

for(int i=0程式設計客棧;i }}

lgs[i]=temp;

} temp=lgs[0];

for(int i=1;itemp)

} printf("%d",temp);

system("pause");

}本文標題: c語言實現最長遞增子串行問題的解決方法

本文位址:

最長遞增子串行之動態規劃 C語言實現

演算法步驟 1 設定乙個mark陣列,mark陣列的個數和原序列data的個數相等,mark i 表示以data i 作為結尾的最長遞增子串行的長度 2 在確定mark i 時,在0到i 1中找到這樣乙個k,使得data k 例項以及 data陣列是原序列,mark陣列儲存最長遞增子串行長度 loc...

最長遞增子串行問題

給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為6的陣列a,則其最長的單調遞增子串行為,長度為4.include define maxn 100 假設最多有100個元素 using namespace std int l maxn l i 表示元...

最長遞增子串行問題

給定正整數序列x1,xn。1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和 xn,則從給定序列中最多可取出多少個長度為s的遞增子串行。設計有效演算法完成 1 2 3 提出的計算任務。由檔案input.txt提供輸入...