最近点对
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
给出n个自然数,求出2个数绝对值之差最小的2个数,如果有多个满足要求,请输出其和最小的那对
-
输入
-
有多组测试数据
第一行一个整数n (2 <= n <= 1000).
第二行是n个自然数的值
输出
-
输出最近的那2个数即可(递增输出)。
样例输入
-
4 1 3 7 9 4 0 3 0 2
样例输出
-
1 3 0 0
-
有多组测试数据
#include<stdio.h>
int main(){
int n,i,j,k,t,a[1001],w,h,q;
while(scanf("%d",&n)!=EOF)
{
q=0;
h=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
k=a[n-1]-a[0];
for(i=n-1;i>0;i--)
{
w=a[i]-a[i-1];
if(w<=k)
{
k=w;
h=a[i];
q=a[i-1];
}
}
printf("%d %d\n",q,h);
}
return 0;
}