1720: 交换瓶子
时间限制: 1 Sec 内存限制: 128 MB
[提交][状态][讨论版]
题目描述
有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
//n比较大不应该直接用选择排序
AC_code:

#include <iostream>
using namespace std;
int a[1005],flag[1005];
int main()
{int n;cin>>n;for(int i = 1; i <= n; i++){cin>>a[i];}for(int i = 1; i <= n; i++)//记录a[i]值的位置 {flag[a[i]] = i;}int temp,ans = 0,pos;for(int i = 1; i <= n; i++){if(a[i] != i){//交换值 temp = a[i];a[i] = a[flag[i]];a[flag[i]] = temp;//更新位置 pos = flag[i];flag[temp] = pos;flag[i] = i; //等价于,int x = a[i]; //交换值 //a[i] ^= a[flag[i]] ^= a[i] ^= a[flag[i]]; //更新位置 //flag[i] ^= flag[x] ^= flag[i] ^= flag[x];ans++;}}cout<<ans<<endl;return 0;
}

1720: 交换瓶子相关推荐

  1. 交换瓶子(蓝桥杯入门)

    交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的 ...

  2. java实现第七届蓝桥杯交换瓶子

    交换瓶子 交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于 ...

  3. 交换瓶子(蓝桥杯真题)

    交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的 ...

  4. 蓝桥杯-【交换瓶子】【2016年省赛B组题解】【C++】

    2016年第七届蓝桥杯题目汇总 http://blog.csdn.net/qq_34202873/article/details/79646517 第九题: 交换瓶子 有N个瓶子,编号 1 ~ N,放 ...

  5. 蓝桥杯2016年C语言B组-交换瓶子

    蓝桥杯2016年C语言B组 交换瓶子 代码 交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的 ...

  6. 蓝桥杯 交换瓶子 Java实现

    交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的 ...

  7. 1224. 交换瓶子

    1224. 交换瓶子 暴力解法: 题解 这种暴力解法长得很像选择排序. 选择排序是分为1 ~ i的有序区 i+1 ~ n的无序区.在无序区中找一个最小的,然后放入无序区的第一个位置. 这个题也是这样, ...

  8. 【Code Pratice】—— 猜字母、次数差、交换瓶子

    文章目录 1 | 猜字母 题目 思路 逻辑代码 2 | 次数差 题目 思路 逻辑代码 3 | 交换瓶子 题目 思路 逻辑代码 1 | 猜字母 题目 把abcd-s共19个字母组成的序列重复拼接106次 ...

  9. c语言交换瓶子流程图,第七届蓝桥杯第9题:交换瓶子

    交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的 ...

最新文章

  1. flipud--矩阵上下翻转
  2. 中国食用香精行业品牌策略与销售渠道分析报告2022-2028年
  3. ansile(3)playbook 使用说明
  4. tomcat下只有.class文件 没有java文件_解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题...
  5. 别再问我如何双击打开.ipynb文件了!
  6. usb4-配置usb触摸屏
  7. Java并发编程高级篇(十):分离任务的执行和结果的处理
  8. The following module was built either with optimizations enabled or without debug information - winz
  9. linux创建指定大小的文件
  10. python中shutil模块_Python中shutil模块的学习笔记教程
  11. numpy+pandas+matplotlib绘制对数函数图形
  12. java中基本数据类型
  13. javascript offsetLeft,Left,clientLeft 各种浏览器位置相关属性
  14. Swift5.1 语言指南(十七) 反初始化
  15. 【挖坑系列】关于浏览器の缓存机制
  16. python提取国家名称缩写_如何从python中的国家缩写中获取国家名称,并混合使用alpha_2和alpha_3 ccodes...
  17. android开发环境搭建——android studio
  18. 为什么在计算机里打开U盘会闪退,U盘闪退怎么办?
  19. 【搬运及个人处理】联想电脑(Lenovo XiaoXinAir-14IIL 2020)散热模式Fn+Q 失效解决方案
  20. 单片机学习记录一:c8t6原理图

热门文章

  1. 戴尔电脑 linux ssh,使用SSH管理Dell iDRAC远程控制卡
  2. java类描述_java笔记2:Java语言中的类和对象的描述
  3. i5四核八线程怎么样_同样四核八线程,Ryzen 3 3100和3300X区别大了!
  4. iphone7参数_来自iPhone8用户的真实体验---这次我们不谈参数,只聊体验
  5. java有参和无参的用处_Java对比有参数和无参数
  6. 首先请与所有现有链接到该网络共享的映射断开连接_嘉兴快速路环线时代来了!这12张主城楼盘片区地图,请收好...
  7. 为什么我们程序员不把软件开发当回事?
  8. 三菱st编程手册_通过示例学习三菱ST编程(ALT指令和条件语句的使用)
  9. bat代码小游戏_程序员入职被27岁领导告诫:我被BAT录用过,是算法方面泰斗大哥...
  10. 05字符串的常用基本操作