问题描述
给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
输入第一行包含一个整数n。
第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式
输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
解题思路:
本题使用暴力求解即可,对每两个数进行求差值,不过求差值需要限制正负情况,因为正数和负数的判决混合在一起不容易判断,因此定义了一个int型的函数,返回正的差值,然后进行判断即可。
代码如下:
#include <cstdio>
#include <climits>
int different(int lhs, int rhs){
if(lhs - rhs > 0){
return lhs - rhs;
}else return rhs - lhs;
}
int main(){
int n;
scanf("%d",&n);
int arr[1001] = {0}; //存放数的数组
for(int i = 0; i < n ; i++){
scanf("%d",&arr[i]); //读入整数
}
int dif = INT_MAX; //初始差值为无穷
for(int i = 0 ; i < n ; i++){//进行遍历
for(int j = i+1 ; j < n ; j++){
if(different(arr[i],arr[j]) < dif){
dif = different(arr[i],arr[j]);
}
}
}
printf("%d",dif);
return 0;
}