使用python 解ccf-csp 201712-1 最小差值

最小差值

问题描述
试题编号: 201712-1
试题名称: 最小差值
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定 n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
  输入第一行包含一个整数 n
  第二行包含 n个正整数,相邻整数之间使用一个空格分隔。
输出格式
  输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
样例说明
  相差最小的两个数是5和4,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明
  有两个相同的数3,它们之间的差值是0.
数据规模和约定
  对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。

问题分析: 这个问题需要嵌套循环依次求出差值,并比较绝对值,找出最小差值。

代码:

n = int(input())
num = input().split()
#a作为最初的差值,1000是因为n不会超过1000
a=1000
for i in range(n):
    for j in range(n):
        if i==j:
            continue
        b= abs(int(num[i]) - int(num[j]))
        if a>b:
            a=b
print(a)

结果1:

提交编号 试题名称 编程语言 评测结果 时间使用 空间使用
1808580 最小差值 python 正确 运行超时 8.675MB

运行超时是因为在循环时,有许多重复的运算,需要想办法去重

n = int(input())
num = input().split()
a=1000
for i in range(n):
    for j in range(0,i+1):
        # 灵感来源:九九乘法表的例子
        if i==j:
            continue
        b= abs(int(num[i]) - int(num[j]))
        if a>b:
            a=b
print(a)

结果2:

提交编号 试题名称 编程语言 评测结果 时间使用 空间使用
1808580 最小差值 python 正确 546ms 8.675MB

你可能感兴趣的:(ccf-csp,python,python)