蓝桥杯Problem D: 交换瓶子

    xiaoxiao2021-03-25  135

    问题及代码:

    Problem D: 交换瓶子

    Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 41   Solved: 31 [ Submit][ Status][ Web Board]

    Description

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

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

     1 2 3 4 5

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

    Input

    第一行: 一个正整数N(N<10000), 表示瓶子的数目

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

    Output

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

    Sample Input

    53 1 2 5 4

    Sample Output

    3

    HINT

    #include <stdio.h> #include <stdlib.h> int sum=0; int a[100]; swap(int i,int j) { sum++; int t; t=a[i]; a[i]=a[j]; a[j]=t; } int main() { int i,j,n; int x,temp; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } for(i=1;i<=n;i++) { if(i!=a[i]) { swap(i,a[i]); } } printf("%d\n",sum); return 0; } 选择排序的思想
    转载请注明原文地址: https://ju.6miu.com/read-19440.html

    最新回复(0)