题目:给出n个正整数,要求找出相邻的两个数字中差的绝对值最小的一对数字,如果有其他两个数差的绝对值相同,则输出在最前面的一对数。2<n<=100,正整数都在10^16范围内。
输入:输入包含两行,第一行为n,第二行是用n个空格分隔的的正整数
输出:输出包含一行两个正整数,要求按照原来的顺序输出
样例输入:
代码实现:
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
long long n = 0,pre = 0,cur = 0,min = 0;
vector< long long > arr;
cin>>n;
arr.resize(n);
for(int i = 0;i<n;i++)
{
cin>>arr[i];
if(i == 1) //arr[0]和arr[1]
{
min = abs(arr[i] - arr[i-1]);
pre = arr[i-1];
cur = arr[i];
}
else if(i > 1) //v[1],v[2] .....v[n]
{
if( min > abs(arr[i] - arr[i-1]) )
{
min = abs(arr[i] - arr[i-1]);
pre = arr[i-1];
cur = arr[i];
}
}
}
cout<<pre<<" "<<cur<<endl;
return 0;
}
结果: