問題描述
給定n個數,請找出其中相差(差的絕對值)最小的兩個數,輸出它們的差值的絕對值。
輸入格式
輸入第一行包含乙個整數n。
第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。
輸出格式
輸出乙個整數,表示答案。
樣例輸入
51 5 4 8 20
樣例輸出
1樣例說明
相差最小的兩個數是5和4,它們之間的差值是1。
樣例輸入
59 3 6 1 3
樣例輸出
0樣例說明
有兩個相同的數3,它們之間的差值是0.
資料規模和約定
對於所有評測用例,2 ≤ n ≤ 1000,每個給定的整數都是不超過10000的正整數。
題目分析
題目本身並不難,只要把輸入的所有整數排個序,然後相鄰的數做減法,求出最小差值就可以了。
我剛開始是像下面這樣用vector寫的。
#include
using
namespace std;
intmain()
sort
(vec.
begin()
, vec.
end())
;short min;
min =
abs(vec[0]
- vec[1]
);for(
int i =
1; i < n -
1; i++
) cout << min;
return0;
}
**可以通過測試,但是發現空間消耗有點大,於是我又用陣列寫了一下
#include
using
namespace std;
intmain()
cout << min;
return0;
}
上面的**只能拿到90分,感覺邏輯沒有問題,而且用vector寫是可以全部通過測試的,後來找了好長時間才發現是sort函式用錯了。
sort(begin, end, cmp)
,其中begin
為指向待sort()
的陣列的第乙個元素的指標,end
為指向待sort()
的陣列的最後乙個元素的下乙個位置
的指標,cmp
引數為排序準則,如果沒有的話,預設以非降序排序。
修改之後的**
#include
using
namespace std;
intmain()
cout << min;
return0;
}
CSP 201712 1 最小差值 (C )
問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入 5 1 5 4 8 20 樣例輸出 樣例說明 相差最小的兩個數是5和4,它們之間...
CSP201712 1最小差值(C 100分)
csp201712 1最小差值 c 100分 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入5 1 5 4 8 20 樣例輸出 ...
csp認證 201712 1最小差值
問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入 515 4820樣例輸出 1樣例說明 相差最小的兩個數是5和4,它們之間的差值是...