近在咫尺-题解

描述

小王最近发现了N个从小到大升序排列的数字,他想找出这一组数字之中,差值最小的一对数字,并输出他们的差,并且找出相对的,差值最大的一对数字,并输出他们的差。

注意,如果在寻找差值最小的一对数字的过程中,有多对数字的差值相同,输出最先找到的一对。

输入描述

第一行输入一个数N,表示一组数字的个数。

第二行输入N个数,表示这一组数字。

输出描述

第一行输出最近的两个数字,以及他们的距离。

第二行输出最远的两个数字,以及他们的距离。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <bits/stdc++.h>
using namespace std;

int main(){
int n;
cin >> n;
int in[n];
int min = INT_MAX,max = INT_MIN,sum = 0;
int mi1,mi2,ma1,ma2;
for(int i = 0;i<n;i++){
cin >> in[i];
}
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(in[i] == in[j]){
continue;
}
if(abs(in[i]-in[j]) > max){
max = abs(in[i]-in[j]);
ma1 = in[i];
ma2 = in[j];
}
if(abs(in[i]-in[j]) < min){
min = abs(in[i]-in[j]);
mi1 = in[i];
mi2 = in[j];
}
}
}
cout << mi1 << " " << mi2 << " " << abs(mi1-mi2) << endl;
cout << ma1 << " " << ma2 << " " << abs(ma1-ma2);
return 0;
}


近在咫尺-题解
https://chenxi-tijie.pages.dev/2025/07/近在咫尺-题解/
作者
chenxi
发布于
2025年7月4日
许可协议