CCF 201712 1 最小差值

2021-08-27 03:56:42 字數 2440 閱讀 2206

試題編號: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

intmain()

,i;

for(i=0;i<20;i++)

cout<

sort(a,a+20);

for(i=0;i<20;i++)

cout<return0;

}

輸出結果將是把陣列a按公升序排序,說到這裡可能就有人會問怎麼樣用它降序排列呢?這就是下乙個討論的內容.

一種是自己編寫乙個比較函式來實現,接著呼叫三個引數的sort:sort(begin,end,compare)就成了。對於list容器,這個方法也適用,把compare作為sort的引數就可以了,即:sort(compare).

1)自己編寫compare函式:

#include

boolcompare(inta,intb)

intmain()

;

for(i=0;i<20;i++)

cout<sort(a,a+20,compare);

for(i=0;i<20;i++)

cout<

return0;

}

**:若不排序,直接做運算,需用雙重迴圈做差值,時間複雜度為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,它們之間的...