Advertisement

编写最长上升子序列的实现

阅读量:

问题描述

已知一个包含n个元素的数列,要求从中识别出一个满足数值递增条件的子序列,试确定该子序列可能达到的最大长度。

输入说明:

第一行输入一个整数n(1 ≤ n ≤ 1000),用于表示数列的总元素数量。

第二行输入n个整数,用空格分隔,代表该数列的具体数值。

输出说明:

输出一个整数,代表所求最长递增子序列的长度。

示例 1:
输入:
5
1 4 3 2 5
输出:
3

代码

复制代码
    #include <bits/stdc++.h>
    using namespace std; 
    
    int main() {
    int n, nums[10005], ans = 0;
    int len[10005] = {};
    scanf ("%d", &n);
    for (int i = 0; i < n; i++){
        len[i] = 1;
        scanf ("%d", nums + i);
        for (int j = 0; j < i; j++){
            if (nums[j] < nums[i] && len[j] >= len[i]) len[i] = len[j] + 1;
        }
        //

全部评论 (0)

还没有任何评论哟~