試題編號:201712-1
試題名稱:最小差值
時間限制:1.0s
記憶體限制:256.0mb
問題描述:問題描述
給定n個數,請找出其中相差(差的絕對值)最小的兩個數,輸出它們的差值的絕對值。
輸入格式
輸入第一行包含乙個整數n。
第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。
輸出格式
輸出乙個整數,表示答案。
樣例輸入
51 5 4 8 20
樣例輸出
樣例說明
相差最小的兩個數是5和4,它們之間的差值是1。
樣例輸入
59 3 6 1 3
樣例輸出
樣例說明
有兩個相同的數3,它們之間的差值是0.
資料規模和約定
對於所有評測用例,2 ≤ n ≤ 1000,每個給定的整數都是不超過10000的正整數。
題目分析:
這道題說白了就是求整個陣列中兩個元素絕對值相差最小的值
先排序,這時候只需要進行n-1次運算,時間複雜度為o(n)
關於排序
stl中就自帶了排序函式sortsort 對給定區間所有元素進行排序 要使用此函式只需用#include sort即可使用,語法描述為:
//sort(begin,end),表示乙個範圍,例子:
#include
int
main()
,i;
for
(i=0;i<20;i++)
cout<
sort(a,a+20);
for
(i=0;i<20;i++)
cout<
return
0;
}
輸出結果將是把陣列a按公升序排序,說到這裡可能就有人會問怎麼樣用它降序排列呢?這就是下乙個討論的內容.
一種是自己編寫乙個比較函式來實現,接著呼叫三個引數的sort:sort(begin,end,compare)就成了。對於list容器,這個方法也適用,把compare作為sort的引數就可以了,即:sort(compare).
1)自己編寫compare函式:
#include
bool
compare(
int
a,
int
b)
int
main()
;
for
(i=0;i<20;i++)
cout<
sort(a,a+20,compare);
for
(i=0;i<20;i++)
cout<
return
0;
}
**:若不排序,直接做運算,需用雙重迴圈做差值,時間複雜度為o(n*n)
# include# include# includeusing namespace std;
int a[1010];
int main()
printf("%d\n",min);
return 0;
}
CCF 201712 1 最小差值
問題描述 給定 n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數 n。第二行包含 n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入5 1 5 4 8 20 樣例輸出 1樣例說明 相差最小的兩個數是5和4,它...
CCF201712 1 最小差值
ccf201712 1 最小差值 問題描述 給定 n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數 n。第二行包含 n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入5 1 5 4 8 20 樣例輸出 1樣例...
CCF 201712 1 最小差值
問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入 51 5 4 8 20 樣例輸出 樣例說明 相差最小的兩個數是5和4,它們之間的...