1 /* 2 * 蘑菇街2016校园招聘第一个编程题 3 *求一个数列删除从下标1,n-2的一个元素之后的最大差值的最小值 4 最大差值的定义是:a1<a2<...an 5 max= max(ai+1-ai) 6 1<=i<=n-1 7 */ 8 #include<iostream> 9 using namespace std; 10 11 //对数组进行排序 12 void sort(int *arr,int n){ 13 int tmp; 14 for(int i=0;i<n;i++){ 15 for(int j=i+1;j<n;j++){ 16 if(arr[j]<arr[i]){ 17 tmp=arr[i]; 18 arr[i]=arr[j]; 19 arr[j]=tmp; 20 } 21 } 22 } 23 } 24 //获取一个数组的最大差值 25 int get_max(int* arr,int n){ 26 int b[n-1]; 27 for(int i=1;i<n;i++){ 28 b[i-1]=arr[i]-arr[i-1]; 29 } 30 sort(b,n-1); 31 return b[n-2]; 32 } 33 34 /* 35 * 取得一个数组中的最大差值,最后一个参数表示 36 * 除去数组中的第x个元素,x!=1~n-2时,表示求 37 * 整个数组的最大插值 38 */ 39 int get_max(int *arr,int n,int pos){ 40 if(pos==0||pos=n-1){ 41 return get_max(arr,n); 42 } 43 else{ 44 int b[n-1]; 45 for(int i=0;i<n;i++){ 46 if(i<pos){ 47 b[i]=arr[i]; 48 } 49 else{ 50 b[i]=arr[i+1]; 51 } 52 } 53 return get_max(b,n-1); 54 } 55 } 56 57 58 int fun(int* arr,int n){ 59 int c[n-2]; 60 for(int i=1;i<n-1;i++){ 61 c[i-1]=get_max(arr,n,i); 62 } 63 sort(c,n-2); 64 return c[0]; 65 } 66 67 int print_arr(int *arr,int n){ 68 for(int i=0;i<n;i++){ 69 cout<<arr[i]<<" "; 70 } 71 cout<<endl; 72 } 73 74 int main(){ 75 int n; 76 cin>>n; 77 int arr[n]; 78 for(int i=0;i<n;i++){ 79 cin>>arr[i]; 80 } 81 print_arr(arr,n); 82 cout<<"The result is:"<<endl; 83 cout<<fun(arr,n)<<endl;; 84 return 0; 85 }