蘑菇街2016校园招聘第一个编程题

 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 }
原文地址:https://www.cnblogs.com/guozhijiang/p/4822283.html