CCF201712-1 最小差值 (100分)
阿新 • • 發佈:2018-12-31
問題描述
試題編號: | 201712-1 |
試題名稱: | 最小差值 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述 給定n個數,請找出其中相差(差的絕對值)最小的兩個數,輸出它們的差值的絕對值。 輸入格式 輸入第一行包含一個整數n。 輸出格式 輸出一個整數,表示答案。 樣例輸入 5 樣例輸出 1 樣例說明 相差最小的兩個數是5和4,它們之間的差值是1。 樣例輸入 5 樣例輸出 0 樣例說明 有兩個相同的數3,它們之間的差值是0. 資料規模和約定 對於所有評測用例,2 ≤ n ≤ 1000,每個給定的整數都是不超過10000的正整數。 |
問題描述:(略)
問題分析:簡單題,排序後遍歷一遍即可
程式說明:程式使用sort進行排序,相鄰的兩個數的差的絕對值是最小的,因此遍歷一遍即可求出答案。
提交後得100分的C++語言程式如下:
#include<iostream> #include<algorithm> using namespace std; const int N=1000; int a[N]; int main() { int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); //排序 int ans=10000; for(int i=1;i<n;i++) ans=min(ans,a[i]-a[i-1]); cout<<ans<<endl; return 0; }
提交後得100分的Java程式
import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner console=new Scanner(System.in); int n,ans=10001; n=console.nextInt(); int[] a=new int[n]; for(int i=0;i<n;i++) a[i]=console.nextInt(); Arrays.sort(a); for(int i=1;i<n;i++) ans=Math.min(ans, Math.abs(a[i]-a[i-1])); System.out.println(ans); console.close(); } }