编写最长上升子序列的实现
发布时间
阅读量:
阅读量
问题描述
已知一个包含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)
还没有任何评论哟~
