1.题目要求
2.题目分析
考虑到说明里的数据规模,我们可以用动态内存分配来创建合适大小的数组,避免栈溢出问题,通过循环遍历,最终找到最长连号。
3.代码实现
#include <stdio.h>
#include <stdlib.h>int main() {int n;scanf("%d", &n);// 使用动态内存分配来创建合适大小的数组,避免栈溢出问题int *a = (int *)malloc(n * sizeof(int));if (a == NULL) {printf("内存分配失败\n");return -1;}for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}int max_cnt = 1; // 用于记录最长连号长度int current_cnt = 1; // 当前正在统计的连号长度,初始为1,因为至少有一个数也算一段连号起始for (int i = 0; i < n - 1; i++) { // 注意循环条件避免越界访问,只到n-1if (a[i] + 1 == a[i + 1]) {current_cnt++;// 更新最大连号长度if (current_cnt > max_cnt) {max_cnt = current_cnt;}} else {current_cnt = 1; // 如果不满足连号条件,重置当前连号长度为1}}printf("%d\n", max_cnt);free(a); // 释放动态分配的内存return 0;
}
***新人博主创作不易,希望大家多多点赞关注呀~