交换瓶子(贪心)

有 N 个瓶子,编号 1 ∼ N,放在架子上。

比如有 5 个瓶子:

2 1 3 5 4

要求每次拿起 2 个瓶子,交换它们的位置。

经过若干次后,使得瓶子的编号为:

1 2 3 4 5

对于这么简单的情况,显然,至少需要交换 2 次就可以复位。

如果瓶子更多呢?你可以通过编程来解决。

​输入格式​​:

  • 第一行包含一个整数 N,表示瓶子数量(1 ≤ N ≤ 10000)
  • 第二行包含 N 个整数,表示瓶子目前的排列(保证是 1 ∼ N 的排列)

​输出格式​​:

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

​样例输入1​​:

5 3 1 2 5 4

​样例输出1​​:

3

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int n;cin>>n;
  int a[10005];
  for(int i=1;i<=n;i++){
    cin>>a[i];
  }
  int c=0;
  for(int i=1;i<=n;i++){
    if(i!=a[i]){
      for(int j=i+1;j<=n;j++){
        if(a[j]==i){
          swap(a[i],a[j]);
          c++;
          break;
        }
      }
    }
  }
  cout<<c;
  return 0;
}
相关推荐
CoovallyAIHub4 分钟前
AAAI 2026这篇杰出论文说了什么?用LLM给CLIP换了个“聪明大脑”
深度学习·算法·计算机视觉
wengqidaifeng8 分钟前
数据结构(三)栈和队列(上)栈:计算机世界的“叠叠乐”
c语言·数据结构·数据库·链表
静听山水12 分钟前
Redis核心数据结构
数据结构·数据库·redis
Physicist in Geophy.16 分钟前
一维波动方程(从变分法角度)
线性代数·算法·机器学习
im_AMBER22 分钟前
Leetcode 115 分割链表 | 随机链表的复制
数据结构·学习·算法·leetcode
Liue6123123123 分钟前
【YOLO11】基于C2CGA算法的金属零件涂胶缺陷检测与分类
人工智能·算法·分类
数智工坊25 分钟前
【数据结构-树与二叉树】4.7 哈夫曼树
数据结构
!!!!81328 分钟前
蓝桥备赛Day1
数据结构·算法
Mr_Xuhhh28 分钟前
介绍一下ref
开发语言·c++·算法
七点半77028 分钟前
linux应用编程部分
数据结构