题目来源:蓝桥杯2016初赛 C++ B组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

问题分析
给解题程序代码,不解释。

AC的C语言程序如下:

/* LQ0048 交换瓶子 */#include <stdio.h>
#include <string.h>#define N 10000 + 1
int a[N], vis[N];int main()
{int n;while (~scanf("%d", &n)) {for (int i = 1; i <= n; i++)scanf("%d", &a[i]);memset(vis, -1, sizeof vis);int cnt = 0;for (int i = 1; i <= n; i++)if (vis[i] == -1) {cnt++;for (int j = i; vis[j] == -1; j = a[j])vis[j] = 1;}printf("%d\n", n - cnt);}return 0;
}

LQ0048 交换瓶子【水题】相关推荐

  1. 蓝桥杯ACM简单题-交换瓶子 2020-12-22

    蓝桥杯ACM简单题-交换瓶子 1.问题描述 有N个瓶子,编号 1 ~ N,放在架子上,要求每次拿起2个瓶子,交换它们的位置,依照大小排序. 2.算法分析 现任这是排序问题,在此使用寻找排序法 3.输入 ...

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

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

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

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

  4. (中石油七)问题 J: 位置2016(水题)

    问题 J: 位置2016 题目描述 由于晨晨还没有研究出核心算法,在游戏中总是被明明击败.晨晨拿出了杀手锏进行反击,精心设计了一个数学难题: N个地砖,每个上面写有一个编号,开始这些编号从左到右正好是 ...

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

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

  6. 1224. 交换瓶子

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

  7. 水题/poj 1852 Ants

    1 /* 2 PROBLEM:poj1852 3 AUTHER:Nicole 4 MEMO:水题 5 */ 6 #include<cstdio> 7 using namespace std ...

  8. HDU2673-shǎ崽(水题)

    如果不能够直接秒杀的题,就不算水题.又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~ 刚睡醒,迷迷糊糊. 题目的意思很简单,求一个最大的,再求一个最小的.几乎是什么 ...

  9. 图论刷水题记录(二)(最短路-----SPFA算法)

    继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...

最新文章

  1. php 代码规范 工具,PHP工具篇:PHPStorm IDE使用CodeSniffer代码规范化管理
  2. Python2、Python3相对路径、绝对路径导入
  3. 九度OJ 区间问题
  4. 64位ubuntu kylin 16.04下制作tiny4412可用的SD启动卡
  5. 【Java】《Java面向对象编程的三大特性》阅读笔记
  6. python建立矩阵原理_怎么用python建立矩阵-问答-阿里云开发者社区-阿里云
  7. 一位00后前端2年经验的成长历程
  8. 小扎展示Facebook十年产品路线图,跳票的智能音箱又有新爆料
  9. C++ new 的三种面貌
  10. java 压缩包添加文件,如何在Java中向现有zip文件添加条目?
  11. 浏览器对象模型bom的作用是什么?
  12. Delphi程序开启XP的ClearType显示效果
  13. Windows Shellcode学习笔记——Shellcode的提取与测试
  14. CPU多级缓存与缓存一致性,详细的讲解
  15. c语言 switch错误用法,C语言switch使用之诡异用法详解
  16. 清除90天苹果充值记录_王者荣耀安卓苹果跨系统角色转移服务,限量测试收费99元...
  17. 达梦数据库SYSDBA密码攻略
  18. centos7 nvidia显卡安装
  19. CSU-ACM2017暑期训练5-三分 D - Toxophily HDU - 2298
  20. arthes—线上debug好帮手

热门文章

  1. 【C/C++】获取计算机CPUID序列号
  2. [PhotoShop]在没有扫描仪的情况下如何使用普通照片PS出扫描效果
  3. x86 CPU中逻辑地址到物理地址映射过程
  4. 机器学习(十):Apriori算法
  5. 【SI好文翻译】铜箔表面纹理对损耗的影响:一个有效的模型(四)
  6. LINUX服务器最简洁的HTTPS免费证书配置方法
  7. 全国行政区划数据(截止2019年3月)
  8. Linux分区扩容2T以上硬盘扩容自带parted工具实现
  9. 科普——为什么要进行玻璃回收?
  10. 【动态规划】气球游戏