交换瓶子

有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

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

分析:贪心法,从左向右如果当前第i个瓶子编号不是i就把编号为i的瓶子换过来。

大神代码O(n)就解决了, 我比赛的是用的是O(n^2), o(>﹏

#include

#include

int main()

{

int arr[10010];//记录第i个瓶子编号为多少

int flag[10010];//记录编号为i的瓶子在哪儿

int ans = 0;

int n,i;

scanf("%d",&n);

for(i = 1 ; i <= n ; i ++)

scanf("%d",&arr[i]);

for(i = 1 ; i <= n ; i ++ )

flag[arr[i]] = i;

for(i = 1 ; i <= n ; i ++)

{

if( i != arr[i] )

{

int x = arr[i];

arr[i] ^= arr[flag[i]] ^= arr[i] ^= arr[flag[i]];

flag[i] ^= flag[x] ^= flag[i] ^= flag[x];

ans ++;

}

}

printf("%d\n",ans);

return 0;

}

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

  1. 蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

    第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球 ...

  2. 第七届蓝桥杯决赛真题 - 凑平方数-全排列+dfs+set去重

    题目: 凑平方数 把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够 办到的.比如:0, 36, 5948721再比如: 1098524736 1, 25, 6390784 0, 4, ...

  3. 2015年第七届蓝桥杯省赛C语言B组

    2015年第七届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题: 题目:奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就 ...

  4. 第七届蓝桥杯C语言C组-(自己懂的题目)

    第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球 ...

  5. java中的冰雹数,java实现第七届蓝桥杯打印数字

    打印数字 打印数字 小明写了一个有趣的程序,给定一串数字. 它可以输出这串数字拼出放大的自己的样子. 比如"2016"会输出为: 00000 1 6666 2 0 0 1 1 6 ...

  6. java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题)

    第七届蓝桥杯JAVA B组真题解析-凑算式(第三题) 凑算式 A+B/C+DEF/GHI =10 (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. ...

  7. 重庆邮电大学计算机学院蓝桥杯,第七届蓝桥杯大赛个人赛(软件类)-重庆赛区获奖名单...

    第七届蓝桥杯全国软件和信息技术专业人才大赛-个人赛省赛(软件类)重庆赛区获奖名单 省份重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重 ...

  8. 2016蓝桥杯b组java试题及答案_2016年第七届蓝桥杯java B组省赛试题

    2016年第七届蓝桥杯java B组省赛试题 1-3.结果填空 4-5.代码填空 6-7.结果填空 8-10.程序设计 1.煤球数目  (结果填空) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, ...

  9. 第七届蓝桥杯 java组有奖竞猜

    第七届蓝桥杯 有奖猜谜 有奖猜谜 小明很喜欢猜谜语. 最近,他被邀请参加了X星球的猜谜活动. 每位选手开始的时候都被发给777个电子币. 规则是:猜对了,手里的电子币数目翻倍, 猜错了,扣除555个电 ...

最新文章

  1. 阿里P9:架构师最根本的差距是思维!
  2. 环境变量PATH与cp 、mv命令
  3. 入门JavaScript?看懂这篇文章就够了!——Web前端系列学习笔记
  4. 初中数学知识遗忘记录(持续更新中)
  5. 吴忠军 - 如何理解马云所说的月入两三万,三四万的人最幸福?
  6. C++工作笔记-C++中assert的作用
  7. 教你如何获取索爱X10 Android2.1 Root权限
  8. IDEA快捷键eclipse版(有自定义部分)
  9. 一个失败的创意:GPGPU纹理化通用加速kD树的实现
  10. E_FAIL (0x80004005) MachineWrap
  11. 制作了一个WMI 查询分析工具
  12. JAVA的Random类(转)
  13. 利用实体类接收中国电信物联网平台推送的数据
  14. 数据库点滴之T-SQL面试语句,练练手
  15. AUTOCAD——快速提取边界线、CAD绘制单双开门
  16. 驱动专题:第四章MTD及Flash驱动 3. nandflash 详细硬件特性
  17. 基于Matlab裂缝识别检测系统
  18. flash读写导致死机问题分析
  19. redis搭建三主三从架构
  20. 快速幂算法和大整数求模

热门文章

  1. 第009天:APP的网络连接
  2. android7 截屏保存,手机屏幕截图无法保存该怎么解决?
  3. 【c语言】编写一个函数计算字符串长度
  4. 软考网络工程师笔记1.1
  5. 品达物流TMS项目_第1章 项目概述和环境搭建
  6. Smartsheet 持续加载、不响应或不显示某些项目
  7. H3C配置多区域OSPF实验
  8. logback-logger和root
  9. Java获取Json中的数据
  10. Ubuntu之xrdp远程桌面安装和使用