交换瓶子(贪心)

有 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;
}
相关推荐
YuK.W34 分钟前
Leetcode100: 94.二叉树中序遍历、104.二叉树最大深度、226.翻转二叉树
java·算法·leetcode·二叉树
.Hypocritical.1 小时前
数据结构笔记——链表成环/反转 + 有序二叉树(BST)构建、遍历、删除
java·数据结构
气泡音人声分离2 小时前
技术解析|均衡器(EQ)工作原理与实操指南:从频率拆分到听感优化
算法·均衡器·音频剪辑
weixin_413063212 小时前
复现 MatchED 边缘检测模型(单张图片重复8次,训练200 epoch)
python·算法·计算机视觉·边缘检测模型
2601_962440842 小时前
计算机毕业设计之jsp教室管理系统
java·开发语言·笔记·分布式·算法·课程设计·推荐算法
AI视频剪辑官2 小时前
播客切片工具选型核心评价维度
网络·人工智能·算法
复杂网络5 小时前
AI 不睡觉,但它比你更会做实验
算法
贵慜_Derek5 小时前
MAI-04|干净数据在工程上意味着什么:MAI 预训练数据治理
人工智能·算法·llm
想吃火锅10056 小时前
【leetcode】146.LRU缓存js
算法·leetcode·缓存