博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换瓶子
阅读量:7207 次
发布时间:2019-06-29

本文共 985 字,大约阅读时间需要 3 分钟。

交换瓶子

有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

分析:

使用选择排序: 保证每次交换都得到一个未排数中最小(或最大)的数

#include 
#include
using namespace std;void swap(int *a, int *b) { int t = *a; *a = *b; *b = t;}int main(){ int n; int a[10000]; int count = 0; cin >> n; for(int i = 0; i < n; i++) { cin >> a[i]; } //cout<< "每次交换显示:"<
a[i]) { //如果不是则交换序号 最终得到最小数序号 min = i; } } if(min != j) { //交换 swap(a[min], a[j]); /*for(int look = 0; look < n; look++) { cout << setw(3) << a[look]; } cout << endl;*/ count ++; } } cout << count ; return 0; }

转载地址:http://btlum.baihongyu.com/

你可能感兴趣的文章
Android ---------- 富文本构建
查看>>
leetcode:Count Primes
查看>>
[转] babel的使用
查看>>
CentOS7.0安装与配置Tomcat-7
查看>>
C# SQL数据访问帮助类
查看>>
.net面试(汇总)
查看>>
.NET Entity Framework基本使用方法
查看>>
BZOJ3528: [Zjoi2014]星系调查
查看>>
Lua 随机数生成问题
查看>>
CLR的执行模型(4):执行程序集的代码
查看>>
同一脚本sh 脚本名 报Syntax error: "(" unexpected而./脚本名不报错,求解!!
查看>>
ZJOI2008皇帝的烦恼
查看>>
新手windows安装nginx
查看>>
浏览器兼容问题踩坑收集
查看>>
Python 实用技巧
查看>>
object c中@property 的使用
查看>>
Sping 核心IOC容器
查看>>
poj 2524
查看>>
MapReduce
查看>>
论文阅读笔记五十六:(ExtremeNet)Bottom-up Object Detection by Grouping Extreme and Center Points(CVPR2019)...
查看>>