C语言-详细讲解-洛谷P1420 最长连号
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-1
if (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;
}
***新人博主创作不易,希望大家多多点赞关注呀~