問題描述:給定n個數,請找出其中相差(差的絕對值)最小的兩個數,輸出它們的差值的絕對值。
輸入格式:輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使 用乙個空格分隔。
輸出格式:輸出乙個整數,表示答案。
輸入:5
1 5 4 8 20
輸出:1
輸入:5 9 3 6 1 3輸出0
資料規模和約定:對於所有評測用例,2 ≤ n ≤ 1000,每個給定的整數都是不超過10000的正整數。
直接能夠想到的是用algorithm庫中的sort函式進行排序後,最小兩個元素之間的差值即為答案,演算法複雜度o(nlog2n)
#include
#include
using
namespace std;
intmain()
;int n;
cin >> n;
for(
int i =
0; i < n;
++i)
sort
(a, a + n)
; cout << a[1]
- a[0]
<< endl;
return0;
}
以下分享以下自己想到的另外一種方法,通過三個整形變數,分別記錄最小差值,以及陣列中的元素。應該是種動態規劃,不知道是不是,改進之後演算法時間複雜度為o(n)
#include
#include
using
namespace std;
//陣列中元素最小差
void
fun(
int a,
int n)
int num1=a[1]
;//初始標記陣列第二位
int num2=a[0]
;//初始標記陣列第一位
int sum =
abs(num1-num2)
;//記錄差
for(
int i =
2; i < n;i++)}
} cout << sum << endl;
}int
main()
;fun
(a,sizeof
(a)/
sizeof
(int))
;return0;
}
CCF CSP 最小差值
最小差值 試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...
CCF 最小差值
試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個...
20171201 最小差值
問題描述 試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...