最長上升子序列(動態規劃)

1 7 3 5 9 4 8 找上升子序列(1,7,9),(1,3,4,8)·········,最大爲4

#include<iostream>
#include<algorithm>
using namespace std;
const int Max = 1010;
int nums[Max];
int maxLen[Max];
int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> nums[i];
        maxLen[i] = 1;
    }
    for (int i = 2; i <=n; i++)
    {
        //每次求以第i個數爲終點的最長上升子序列的長度
        for (int j = 1; j < i; j++)
        {
            //查看以第j個數爲終點的最長上升子序列
            if (nums[i]>nums[j])
            {
                maxLen[i] = max(maxLen[i],maxLen[j]+1);
            }
        }
    }
    cout << *max_element(maxLen+1,maxLen+n+1);//返回最大
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章