#include <stdio.h> //如果删除的元素是用于求最大间隔的一个数的话,这个序列的最大间隔就比原先的最大间隔大 //所以就不能是最大间隔的最小值 //如果删除的元素与原先序列的最大间隔没有关系的话,这个序列的最大间隔有两种可能: //1、原先序列的最大间隔 //2、重新产生一个最大间隔,如果任意删除一个元素时,最大间隔都比原先大时,我们就要去考虑这种可能性,就会产生新的最大间隔。刚开始木想到这种情况,我直接将原序列的最大间隔输出,提交成功了,但是仔细想了想还有这种可能 int main() { int a, b, max = 0, min = 1000; while (scanf("%d", &a) == 1) { int arr[100]; scanf("%d", &arr[0]); for (int i = 1; i < a; i++) { scanf("%d", &arr[i]); if (max < (arr[i] - arr[i - 1])) { max = arr[i] - arr[i - 1]; //找出原序列的最大间隔 } } int c=0,min=1001; for(int i=1;i<a-1;i++){ if(arr[i+1]-arr[i-1]<=max){ //第2种情况 c=1; break; }else{ if(arr[i+1]-arr[i-1]<min){ min=arr[i+1]-arr[i-1]; } } } if(c){ printf("%d\n", max); }else{ printf("%d\n",min); } } return 0; }