题目描述
输入长度为 n n n 的一个正整数序列,要求输出序列中最长连号的长度。
连号指在序列中,从小到大的连续自然数。
输入格式
第一行,一个整数 n n n。
第二行, n n n 个整数 a i a_i ai,之间用空格隔开。
输出格式
一个数,最长连号的个数。
1.题目分析
定义一个临时计数器,将数据存入数组后,遍历第i个数据+1 后,是否等于第i+1个数据,等于临时计数器加一,不等于则清空为0,定义一个最终计数器,每一轮循环将较大的临时计数器的值存入。
2.题目思路
将数据存入数组后,判断相邻之间是否为连续数,连续加一,不连续则清零,存入最大连续数,
由于四次连号就是有五个数连续,最终个数等于连续数加一。
3.代码实现
#include <stdio.h>int main(){int a,n;//临时计算int temp = 0;//最终连号数int count = 0;scanf("%d",&n);int arr[10000];//存入数组for (int i = 0; i < n; ++i){scanf("%d",&a);arr[i] = a;}//判断相邻之间是否为连续数for (int i = 0; i < n; ++i){//连续加一,不连续则清零if (arr[i] + 1 == arr[i+1]){temp++;} else{temp = 0;}//存入最大连续数if (temp >= count){count = temp;}}//四次连号就是有五个数连续,个数等于连续数加一printf("%d",count+1);return 0;
}