最長遞增子串行系列的兩種寫法

2021-07-25 08:29:55 字數 1237 閱讀 8789

第乙個案例:  code(vs) 1576 最長嚴格上公升子串行

第一種寫法:

#include#include#includeusing namespace std;

int main()

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

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

printf("%d\n", ans);

}

第二種寫法:

#include#include#includeusing namespace std;

int main()

dp[i] = max1+1;

ans = max(ans, dp[i]);}}

printf("%d\n", ans);

}

第二個案例:code(vs) 3027 線段覆蓋2

第一種寫法:

#include#include#includeusing namespace std;

struct node

node[1005];

bool cmp(node a, node b)

int main()

sort(node, node+n, cmp);

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

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

ans = max(ans, dp[j]);}}

printf("%d\n", ans);

}

第二種寫法:

#include #include #include using namespace std;

int n;

struct node

node[1001];

int cmp(const node x, const node y)

int main(void)

sort(node, node+n, cmp);

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

}node[i].v = node[i].v + temp;

if(ans < node[i].v)

}printf("%d\n", ans);

return 0;

}

個人認為第二種寫法比較好。

最長遞增子串行的長度

對於乙個數字序列,請設計乙個複雜度為o nlogn 的演算法,返回該序列的最長上公升子串行的長度,這裡的子串行定義為這樣乙個序列u1,u2.其中ui ui 1,且a ui a ui 1 給定乙個數字序列a及序列的長度n,請返回最長上公升子串行的長度。測試樣例 2,1,4,3,1,5,6 7返回 4採...

最長遞增子串行的數量

陣列a包含n個整數 可能包含相同的值 設s為a的子串行且s中的元素是遞增的,則s為a的遞增子串行。如果s的長度是所有遞增子串行中最長的,則稱s為a的最長遞增子串行 lis a的lis可能有很多個。例如a為 1 3 4,1 2 4均為a的lis。給出陣列a,求a的lis有多少個。由於數量很大,輸出mo...

最長遞增子串行的思索

這是乙個比較古老的演算法問題,在上學期的演算法課中也有所講解,不過當初並沒有理解到位,現在重新思考一下。最長遞增子串行問題 給定乙個序列,找出其中最長的乙個序列,並且滿足對任意的 0 n,m j,都有bn bm。最樸素的一種解法是從a0開始,對給定序列進行遍歷,在遇到分叉時產生分支,最後將最長的序列...