1. 程式人生 > >CCF201712-1 最小差值(100分)python兩種方法實現

CCF201712-1 最小差值(100分)python兩種方法實現

最小差值

問題描述

問題描述 
  給定n個數,請找出其中相差(差的絕對值)最小的兩個數,輸出它們的差值的絕對值。 
輸入格式 
  輸入第一行包含一個整數n。 
  第二行包含n個正整數,相鄰整數之間使用一個空格分隔。 
輸出格式 
  輸出一個整數,表示答案。 
樣例輸入 

1 5 4 8 20 
樣例輸出 

樣例說明 
  相差最小的兩個數是5和4,它們之間的差值是1。 
樣例輸入 

9 3 6 1 3 
樣例輸出 

樣例說明 
  有兩個相同的數3,它們之間的差值是0. 
資料規模和約定 
  對於所有評測用例,2 ≤ n ≤ 1000,每個給定的整數都是不超過10000的正整數

程式碼實現

方法一:(暴力法)

num_str = input()
in_str = input()
min = 10000

num = []

for i in in_str.split():
    num.append(int(i))

if int(num_str) <= 1000 and int(num_str) >= 2 and len(num) <= 1000 and len(num) >= 2:

    for i in range(len(num)):
        for j in range(i+1,len(num)):
            sub = abs(num[i]-num[j])
            if min > sub:
                min = sub
    print(min)
else:
    print()

方法二:(排序法)

num_str = input()
in_str = input()

num = []

for i in in_str.split():
    num.append(int(i))
num.sort()
if int(num_str) <= 1000 and int(num_str) >= 2 and len(num) <= 1000 and len(num) >= 2:
    sub = []
    for i in range(len(num) - 1):
        sub.append(abs(num[i]-num[i+1]))
    print(min(sub))
else:
    print()

都是100分。