最长升序子串1231
生活随笔
收集整理的這篇文章主要介紹了
最长升序子串1231
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目與解析
給定n個數字,在這n個數字中找出最長上升子序列。
那么什么是上升子序列呢?
上升子序列就是在一個數列中遞增的部分,不一定是連續的,比如說
圖中的24678和24679都是數列24635798的上升子序列
解題思路
就按圖上2 4 6 3 5 7 9 8 這個數列來說:
我們定義dp[i]為以a[i]結尾的數列中的最長上升子序列的長度。
這很明顯就是一個典型的動態規劃,,,,
上代碼
#include <iostream> #include <vector> #include <algorithm>using namespace std;int main() {int n;while (cin >> n){vector<int> x(n, 0);for (int i = 0; i < n; ++i){cin >> x[i];}vector<int> dp(n, 1);for (int i = 1; i < n; ++i){for (int j = 0; j < i; ++j){if (x[i] > x[j])dp[i] = max(dp[j] + 1, dp[i]);}}cout << *max_element(dp.begin(), dp.end()) << endl;}return 0; }總結
以上是生活随笔為你收集整理的最长升序子串1231的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简明Python教程学习笔记_5_解决问
- 下一篇: 浅析段错误和栈溢出