输入数组长度及其内容,经过多次操作(将首尾数字移至尾部)后得到最小绝对值和

eg 输入N ,A【N】,输出min(|A[0]-1|+|A[1]-2|+……+|A[N-1]-N|)


import sys
import time

while True:


    line1 = sys.stdin.readline().strip()
    if line1 == '':
        break
    line2 = sys.stdin.readline().strip()

    starttime = time.clock()

    a = int(line1)
    b = [int(n) for n in line2.split()]



    j = 0
    min = 99
    while j <= 5:  # 重新排序一次
        c = b[1:]
        c.append(b[0])
        #print(c)

        i = 1
        temp = 0
        while i <= 5:  # 求和
            t = abs(c[i - 1] - i)
            temp = temp + t
            i = i + 1
            if i == 6:
                break
        #print(temp)
        if temp < min:
            min = temp
        # print(min)
        b = c
        j = j + 1

    print(min)
    endtime = time.clock()
    print("final is in",endtime-starttime)
    sys.exit()

 

输入输出总要搞好久,唉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值