数组中的数是乱序的,求出数组中最大的连续子序列(这里为递增)。
方法一:用一个辅助数组list[length],记录下数组中每个元素对应的最大连续序列长度,默认为1,即从该元素后没有连续的序列。当i元素比i-1个元素大时,则将i-1个元素的最大子序列长度加1即为第i个元素的最大序列长度。最后从list[]数组中找到最大的值max,即为该数组的最大连续子序列。
该方法的优点是思路清晰,代码简介易懂;缺点是需要一个额外的数组空间list[].算法的复杂度为O(n*n).
#include<iostream>
using namespace std;
int List_length(int a[],int length)
{
int *list = new int[length];
int i,j;
list[0] = 1;
for(i=1;i<length;++i)
{
j = i-1;
list[i] = 1;
if(a[i]>a[j] )//&& list[j]+1>list[i]
list[i] = list[j]+1;
}
int max = 0;
for(i=0;i<length;++i)
{
if(list[i]>max)
max = list[i];
}
return max;
}
void main()
{
int a[5] = {-2,-1,3,4,0};
int num = List_length(a,5);
cout<<&#