题目描述
给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 -
ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?
输入描述:
第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。
输出描述:
输出答案。
输入例子:
5 1 2 3 7 8
输出例子:
4
分析:删除一个元素后的序列的最大间隔大于等于原序列的最大间隔,所以所求就是原序列的最大间隔,就是有点绕,想清楚其实很简单。。。
联机算法,边读入边计算
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n;
while(cin>>n){
int tmp1=0,tmp2=0,max=0;
while(n--){
cin>>tmp2;
max=tmp1>0&&(tmp2-tmp1)>max?tmp2-tmp1:max;
tmp1=tmp2;
}
cout<<max<<endl;
}
}