問題描述:
給定乙個序列,找出其最長遞增子串行長度。
比如 輸入 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提供輸入...