给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。
#include<stdio.h>
struct node//设计一个带有计数的数组结构体
{
int data;
int count;
}s[100001];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)//把n个数字输入到数组的data域中,并将其count域初始为1
{
scanf("%d",&s[i].data);
s[i].count=1;
}
for(i=0;i<n;i++)//循环比较,找第二个数比第一个数大,连续的子列,计数
{
for(j=i+1;j<n+1;j++)//从0-n,把一个最为标记固定,另外j从其后依次比较
{
if(s[j].data>s[j-1].data)
s[i].count++;
else
break;
}
}
int sum=0,t,z;
for(int i=0;i<n;i++)//找出那个count值最大的
{
if(sum<s[i].count)
{
sum=s[i].count;
t=i;
}
}
for(z=t;z<sum+t-1;z++)//输出
printf("%d ",s[z].data);
printf("%d",s[z].data);
return 0;
}