题目描述:
输入长度为 n 的一个正整数序列,要求输出序列中最长连号的长度。
连号指在序列中,从小到大的连续自然数。
输入格式:
第一行,一个整数 n。
第二行,n 个整数 a[ i ],之间用空格隔开。
输出格式:
一个数,最长连号的个数。
样例:
输入:
10
1 5 6 2 3 4 5 6 8 9
输出:
5
思路:
1.定义 i 作为起点,当满足 a[ j+1]=a[ j ]+1 时j不断往后移动。
2.当不满足a[ j+1]=a[ j ]+1 条件时,计算 i-j+1 作为答案。
3.然后将此次所求答案与之前答案相比较,取最大值,令i=j。
4.最后i++,j++,开始新一轮的寻找最长连号。
解题代码:
# include <iostream>
using namespace std;
const int N = 10010;
int main()
{
int n;
scanf("%d", &n);
int a[N],ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d ", &a[i]);
}
for(int i=1,j=1;j<=n;i++,j++)
{
while (a[j+1] == a[j] + 1)
{
j++;
}
int t = j - i+1;
i = j;
ans = max(ans, t);
}
cout << ans<<endl;
}