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

2019-12-08  本文已影响0人  冒泡泡de可乐

问题描述:

有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()

上一篇 下一篇

猜你喜欢

热点阅读