ccf-201712-1最小差值

试题编号: 201712-1
试题名称: 最小差值
时间限制: 1.0s
内存限制: 256.0MB
问题描述: 
问题描述
  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
  输入第一行包含一个整数n。
  第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式
  输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
样例说明
  相差最小的两个数是5和4,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明
  有两个相同的数3,它们之间的差值是0.
数据规模和约定
  对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。

法一:暴力逐个比较

 1 #include<iostream>
 2 #include<stdlib.h> 
 3 using namespace std;
 4 const int N=1000;
 5 const int N2=10000;
 6 int main()
 7 {
 8     int n;
 9     cin>>n;
10     int a[N];
11     for(int i=0;i<n;i++)
12     cin>>a[i];
13     int min=N2;
14     for(int i=0;i<n;i++)
15     {
16         for(int j=i+1;j<n;j++)
17         {
18             int d=abs(a[i]-a[j]);
19             if(d<min)
20             min=d;
21         }
22     }
23     cout<<min<<endl;
24     return 0;
25 }


法二:先排序,再找差值的最小值

 1 #include<iostream>
 2 #include<algorithm> 
 3 using namespace std;
 4 const int N=1000;
 5 const int N2=10000;
 6 int a[N];
 7 int main()
 8 {
 9     int min=N;
10     int n;
11     cin>>n;
12     for(int i=0;i<n;i++)
13     cin>>a[i];
14     sort(a,a+n);
15     for(int i=1;i<n;i++)
16     {
17         int d=a[i]-a[i-1];
18         if(d<min)
19         min=d;
20     }
21     cout<<min<<" ";
22     cout<<endl;
23 }



版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/stt-ac/p/10213749.html