试题 历届真题 交换瓶子【第七届】【省赛】【B组】

简介: 有N个瓶子,编号 1 ~ N,放在架子上。  比如有5个瓶子:  2 1 3 5 4  要求每次拿起2个瓶子,交换它们的位置。  经过若干次后,使得瓶子的序号为:  1 2 3 4 5  对于这么简单的情况,显然,至少需要交换2次就可以复位。  如果瓶子更多呢?你可以通过编程来解决。

有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 , 不能通过工程设置而省略常用头文件。


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


注意:

for循环里面不能是for(int i=1;i<=n;i++)

否则:1d905b3fed5c498eb8596e60a5f63f72.png

代码:


C语言:


#include <stdio.h>
#define N 10002
int main() {
  int num = 0, n, a[N] = {0}, i;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  for (i = 1; i <= n; i++) {
    while (a[i] != i) {
      int t = a[a[i]];
      a[a[i]] = a[i];
      a[i] = t;
      num++;
    }
  }
  printf("%d", num);
  return 0;
}


C++:


#include <iostream>
using namespace std;
#define N 10002
int main() {
  int num = 0, n, a[N] = {0}, i;
  cin >> n;
  for (i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (i = 1; i <= n; i++) {
    while (a[i] != i) {
      int t = a[a[i]];
      a[a[i]] = a[i];
      a[i] = t;
      num++;
    }
  }
  cout << num;
  return 0;
}


Then we can see:f667c577afd3491b827914e252af0e6a.png


相关文章
|
10天前
|
人工智能 搜索推荐 C++
小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题
小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题
|
10月前
砍竹子(蓝桥杯 2022 省赛 B 组 J 题)
砍竹子(蓝桥杯 2022 省赛 B 组 J 题)
60 0
|
11月前
|
算法 测试技术 C++
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解(一)
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
|
11月前
|
算法 测试技术 C++
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解(二)
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
115 0
|
11月前
|
存储 人工智能 测试技术
看看去年蓝桥考了什么,第十三届蓝桥杯省赛(C/C++ 大学B组)题解(一)
看看去年蓝桥考了什么,第十三届蓝桥杯省赛(C/C++ 大学B组)题解
175 0
|
11月前
|
机器学习/深度学习 测试技术 C++
看看去年蓝桥考了什么,第十三届蓝桥杯省赛(C/C++ 大学B组)题解(二)
看看去年蓝桥考了什么,第十三届蓝桥杯省赛(C/C++ 大学B组)题解
122 0
|
12月前
|
人工智能 Java 测试技术
试题 历届真题 完全二叉树的权值【第十届】【省赛】【A组】
试题 历届真题 完全二叉树的权值【第十届】【省赛】【A组】
|
算法 C++ Windows
省赛将至,咱们看看第十一届蓝桥杯省赛C/C++ B组试题都出了些什么了?知己知彼,百战不殆
省赛将至,咱们看看第十一届蓝桥杯省赛C/C++ B组试题都出了些什么了?知己知彼,百战不殆
148 0
省赛将至,咱们看看第十一届蓝桥杯省赛C/C++ B组试题都出了些什么了?知己知彼,百战不殆

热门文章

最新文章