美文网首页
蓝桥杯:交换瓶子--Python解法

蓝桥杯:交换瓶子--Python解法

作者: 冒泡泡de可乐 | 来源:发表于2019-12-08 18:08 被阅读0次

    问题描述:

    有N个瓶子,编号 1 ~ N,放在架子上。
    比如有5个瓶子:
    2 1 3 5 4

    要求每次拿起2个瓶子,交换它们的位置。
    经过若干次后,使得瓶子的序号为:
    1 2 3 4 5

    对于这么简单的情况,显然,至少需要交换2次就可以复位。
    如果瓶子更多呢?你可以通过编程来解决。

    输入格式:

    第一行: 一个正整数N(N<10000), 表示瓶子的数目
    第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。

    输出格式:

    为一行一个正整数,表示至少交换多少次,才能完成排序。

    例如,输入:

    5
    3 1 2 5 4

    程序应该输出:

    3

    再例如,输入:

    5
    5 4 3 2 1

    程序应该输出:

    2

    资源约定:

    峰值内存消耗 < 256M
    CPU消耗 < 1000ms

    代码:

    def run():
        n = int(input())
        num_list = [int(i) for i in input().split()]
        count = 0
        for i in range(1, n+1):
            if num_list[i-1] != i:
                index = num_list.index(i)
                num_list[i-1], num_list[index] = num_list[index], num_list[i-1]
                count += 1
        print(count)
    run()
    
    

    相关文章

      网友评论

          本文标题:蓝桥杯:交换瓶子--Python解法

          本文链接:https://www.haomeiwen.com/subject/nigmgctx.html