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 }