题目:
小刚想买两根双节棍,左手一根,右手一根。他到商店里,发现共有n(2<=n<=100)根双节棍,第i根的长度为Li(1<=Li<=1000).他希望买下的两根双节棍的长度差尽可能的小,请帮它找到两根合适的双节棍,并输出最小的长度差。
输入格式
第一行:一个整数n,表示商店里出售双节棍的数量。
第二行:n个正整数,用空格分开,第i个数Li表示第i根双节棍的长度。
输出格式
输出只有一个整数,为两根双节棍的长度差的最小值。
样例输入
5
3 4 1 6 8
样例输出
1
- 分析思路:
如果在枚举的时候直接相减可能会出现负数。还需要保证枚举的两根棍不要重复了。
- 代码:
#include <iostream>
#include<cstdio>
#include<cmath>
#include <algorithm>
using namespace std;
int L[110]; //双节棍数
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&L[i]);
}
int ans=10000;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){ //双节棍不重
if(L[i]>=L[j]){
if(L[i]-L[j]<ans){
ans=L[i]-L[j];
}
}
else{
if(L[j]-L[i]<ans){
ans=L[j]-L[i];
}
}
}
}
printf("%d",ans);
return 0;
}