1.题目要求
最长单调自增子序列:给定一个长度为N的数组,找出一个最长的单调自增子序列,输出最长单调自增子序列的长度(不一定连续,但是顺序不能乱)。
测试用例参考:
输入:5,6,7,1,2,8 输出:4
2.完整代码
#include<iostream>
#include<vector>
using namespace std;
int maxLen(int* a, int n)
{
vector<int> vlen(n, 1);
int maxLen = 1;
for (int i = 1; i < n; ++i)
{
for (int j = 0; j < i; ++j)
{
if (a[i] > a[j] && vlen[j] + 1 > vlen[i])
vlen[i] = vlen[j] + 1;
}
if (maxLen < vlen[i])
maxLen = vlen[i];
}
cout << "最长长度:" << endl;
return maxLen;
}
int main()
{
int T;
cout << "请输入要执行操作的次数:" << endl;
cin >> T;
while (T>0)
{
--T;
int n;
cout << "请输入要键入数组的长度:" << endl;
cin >>n;
int* a = new int[n];
cout << "请输入数组:" << endl;
for (int i = 0; i < n; ++i)
cin >> a[i];
cout << maxLen(a, n) << endl;
delete[]a;
}
return 0;
}
3.运行结果截图