您的位置:首页 > 编程语言

最近点对

2014-02-23 08:13 295 查看
描述

给出n个自然数,求出2个数绝对值之差最小的2个数,如果有多个满足要求,请输出其和最小的那对

输入有多组测试数据

第一行一个整数n (2 <= n <= 1000).

第二行是n个自然数的值
输出

输出最近的那2个数即可(递增输出)。
样例输入
4
1 3 7 9
4
0 3 0 2


样例输出
1 3

0 0

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<ctype.h>
#include<algorithm>
#include<stack>
#include<queue>
#include<set>
#include<math.h>
#include<vector>
#include<deque>
#include<list>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
int n,i,a[1010],k,t;
while(scanf("%d",&n)!=EOF)
{
k=0;t=0;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
int min=a[n-1]-a[0];
for(i=n-1;i>0;i--)
if(a[i]-a[i-1]<=min)
{
min=a[i]-a[i-1];
k=a[i];
t=a[i-1];
}
printf("%d %d\n",t,k);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 printf