zoukankan      html  css  js  c++  java
  • 奶牛问题(链家网)

    题目描述

    有N(1<=n<=1000)头奶牛,它们都被标记上一个优先等级编号1,2,3...用来表示它们喝水的优先次序,编号为1的先喝水,编号2的其次。

    每天奶牛开始时排成一排,但总是很乱,你要把它们重新排成编号为1的在前,编号为2的其次....

    你能计算出最少需要多少次的交换次序来完成这次重拍吗?

    输入

    第一行:1个整数N

    地2至N+1行;第i+1行有一个整数表示开始队列中第i头奶牛的编号。

    输出

    一个整数,表示最少需要交换多少次

    思路:

    对于每一位如果a[i]!=i那么就要交换了,我们把a[i]放到这个值放到a[i]这个位置。模拟一下就好了

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    int a[10000];
    int main() {
        int n;
        cin >> n;
        for (int i = 1; i <= n; ++i) {
            cin >>a[i];
        }
        int ans = 0;
        for (int i = 1; i <= n; ++i) {
            int x = i;
            while (a[i] != i) {
                x = a[i];
                swap(a[x], a[i]);
                ans++;
            }
        }
        cout << ans << endl;
        return 0;
    }
  • 相关阅读:
    CSS实现返回网页顶部
    jQuery实现小火箭动态返回顶部代码
    Linux目录结构介绍
    Linux常用命令及技巧
    Linux文件系统
    Linux特性
    numpy中基础函数
    restful规范
    堆栈
    三次握手与四次挥手
  • 原文地址:https://www.cnblogs.com/pk28/p/7402613.html
Copyright © 2011-2022 走看看