2021蓝桥杯真题最大间隙 C语言/C++
创始人
2025-05-31 02:54:12

题目描述
给定一个序列 a 1 ≤a2 ≤⋯≤an 。其中 a 1 ≤a2 ≤⋯≤an 。

相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。

请问序列中最大的间隙值是多少?

输入描述
输入的第一行包含一个整数 n,表示序列的长度。

第二行包含 n 个正整数,为给定的序列。

其中,1≤n≤1000,1≤ai≤10^5

输出描述
输出一个整数,表示序列中最大的间隙值。

输入输出样例
示例 1
输入

5
1 3 8 9 12
输出

5
运行限制
最大运行时间:1s
最大运行内存: 128M

所需变量

int max = 0;//初始化max为0

int arr[2] = {0};//利用一个下标仅有2的数组存储

int n;//代表共有n个数

int i;//循环变量

思路:我们每次求得都是两个数之间的差距,那么我们考虑是否能将这两个数只存放在一个2个空间大小的一维数组arr中,比如我们来了第一个数,我们就放在arr[0],第二个数放在arr[1],第三个数放在arr[0],以此类推下去,这样我们就不需要定义一个n长的一维数组,部分实现代码如下:

for(i = 0;icin>>arr[i%2];
}

知道每次如何存储之后,我们就想着判断两个数之间的差值,如果这个差值大于目前我所存储的max,那么我就用这个差值取替换max,将max修改为当前最大,直至循环结束,我们就能得到最大的间隙

if(i%2){if((arr[i%2] - arr[0])>max){max = arr[i%2] - arr[0];}
}else{if((arr[i%2] - arr[1])>max){max = arr[i%2] - arr[1];}
}

将上面两个理解后,整合一下就能得到下面的答案,代码如下(编译器是dv,语言是C语言):

#include 
using namespace std;
int main()
{int max = 0,arr[2] = {0},n,i;cin>>n;for(i = 0;icin>>arr[i%2];if(i%2){if((arr[i%2] - arr[0])>max){max = arr[i%2] - arr[0];}}else{if((arr[i%2] - arr[1])>max){max = arr[i%2] - arr[1];}}}cout<

在这里插入图片描述

相关内容

热门资讯

分享实测“中至鹰潭麻将到底有挂... 您好:中至鹰潭麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【69174242】很多玩家在中...
科普实测“花城牌舍有没有透视挂... 您好:花城牌舍这款游戏可以开挂,确实是有挂的,需要软件加微信【8700483】,很多玩家在花城牌舍这...
玩家游戏玩法“新518互娱可以... 您好:新518互娱,这款游戏可以开挂,确实是有挂的,需要软件加微信【3847338】或【953252...
分享实测“开心联盟牛牛是不是有... 您好:开心联盟牛牛这款游戏可以开挂,确实是有挂的,需要软件加微信【5951795】,很多玩家在开心联...
玩家实测“一起宁德麻将到底有没... 您好:一起宁德麻将这款游戏可以开挂,确实是有挂的,需要软件加微信【8700483】,很多玩家在一起宁...