zoukankan      html  css  js  c++  java
  • 2016 I 交换瓶子

    有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
    5
    5 4 3 2 1

    样例输出 

    3
    2
    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int a[10010];
    int main(){
        ios::sync_with_stdio(0);
        while(cin >> n){
            int ans = 0;
            for(int i = 1; i <= n; i++)
                cin >> a[i];
            for(int i = 1; i <= n; i++){
                while(i != a[i]){
                    //a[i]的位置不对,要找一个对的位置
                    //a[i]放在a[a[i]],一直找到合适的位置
                    swap(a[i],a[a[i]]);
                    ans++;
                }
            }
            cout << ans << endl;
        }
        return 0;
    }
     
  • 相关阅读:
    HIFU控制器的显示板
    风扇控制板
    直流源控制板
    HIFU的心脏
    强劲的全桥驱动
    脑电模块
    另一个12导联心电模块
    数据处理,pandas方面遇到的问题
    6.13 django
    python 零基础学习之路-06 常用模块
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12713326.html
Copyright © 2011-2022 走看看