问题遇到的现象和发生背景
如果序列中相邻两个数的左边一个值小于右边的值,则我们说这两个值是递增的。给定一个数值序列,请输出序列中最长的递增子序列(子序列是指原始序列中的连续的一段)的长度。
输入说明
第一行一个整数,表示序列中数值的个数n(1<n<10000)。第二行,n个用空格隔开的整数,表示序列
输出说明
一个整数,表示符合条件的序列长度。如果不存在递增子序列,输出0.
如果序列中相邻两个数的左边一个值小于右边的值,则我们说这两个值是递增的。给定一个数值序列,请输出序列中最长的递增子序列(子序列是指原始序列中的连续的一段)的长度。
输入说明
第一行一个整数,表示序列中数值的个数n(1<n<10000)。第二行,n个用空格隔开的整数,表示序列
输出说明
一个整数,表示符合条件的序列长度。如果不存在递增子序列,输出0.
每两个数比较,符合规则时计数加1.不符合规则时判断当前计数是否最大。然后重新开始计数
#include <stdio.h>
int main()
{
int i,t=0,max=0,n,a[10000] = {0};
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
if(a[i] > a[i-1])
t++;
else
{
if(t>max)
max = t;
t=0;
}
}
if(t > max)
max = t;
if(max > 0)
max++;
printf("最长递增长度:%d\n",max);
return 0;
}