CSP201712 1最小差值

2021-09-28 11:13:19 字數 1619 閱讀 2337

問題描述

給定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,它們之間的差值是...