ACM刷题之路(九)数论-逆序组 交换座位

简介: ACM刷题之路(九)数论-逆序组 交换座位

C 交换座位


时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte

总提交:185            测试通过:61

描述

学号分别为1,2,3,4,5,6,7,8的8位同学随机排成一排,现在想把他们按学号从小到大排序,在排序的时候每次只能其中的2位同学进行换位,请问最少需要几次这样的换位。

输入

输入有多组数据(组数至少20000),每组输入一个含有12345678的字符串。

输出

输出最少所需的交换次数。

样例输入

12345678

12365478

12345786

样例输出

0

1

2


分析:

由于数字只有8个数,所以可以暴力解决。

根据观察:

如果两个数需要对调,那么交换的次数为1;

如果三个数需要对调,那么交换的次数为2;

如果四个数需要对调,那么交换的次数为3;

...

观察可以得出:如果n个数需要对调,那么交换的次数为n-1;

所以我们只要通过搜索找出8个数字中有多少个“小组”。

比如12365487:有1、2、3、654、87 五大组,组员分别为1、1、1、3、2个人  所以交换次数等于0、0、0、2、1;

加起来就是三次。


AC代码如下:

1. #include<stdio.h>
2. #include<string.h>
3. #include<iostream>
4. using namespace std;
5. 
6. char a[9];
7. bool b[9];
8. int geshu;
9. void dfs(int x){
10.     b[x] = true;
11.     geshu++;
12. if (b[a[x] - '0'] == false)
13. dfs(a[x] - '0');
14. }
15. 
16. int main(){
17. while (gets(a + 1)){
18. int sum = 0, i, sum2 = 0;
19. memset(b, false, sizeof(b));
20. for (i = 1; i <= 8; i++){
21.             geshu = 0;
22. if (b[i] == false){
23.                 geshu = 0;
24. dfs(i);
25.             }
26. if (geshu > 1){
27.                 sum += geshu - 1;
28.             }
29.         }
30.         cout << sum << endl;
31.     }
32. return 0;
33. }
34.

 


相关文章
|
6月前
|
算法 测试技术 C#
C++二分算法:最多可以参加的会议数目 II
C++二分算法:最多可以参加的会议数目 II
|
5月前
|
C++
【洛谷 P1047】[NOIP2005 普及组] 校门外的树 题解(位集合)
**NOIP2005普及组问题:**给定长度为$l$的马路,上面等距种植着树,需移除位于建造地铁区域的树。输入包含马路长度和区域数,以及各区域起止点,输出移树后剩余树的数量。样例输入:$l=500$, $m=3$,输出:$298$。$20\%$数据无区域重合,$1 \leq l \leq 10^4$,$1 \leq m \leq 100$。解决方案利用位集合(bitset)表示树的状态,遍历区域将树设为0,最后统计1的数量。AC代码使用C++实现。
26 0
|
6月前
|
存储 人工智能 算法
第十四届蓝桥杯C++B组编程题题目以及题解
第十四届蓝桥杯C++B组编程题题目以及题解
|
6月前
蓝桥备战--纪念品分组OJ532,贪心证明
蓝桥备战--纪念品分组OJ532,贪心证明
28 0
[算法刷题题解笔记] 洛谷 P1003 [NOIP2011 提高组] 铺地毯 [枚举]
[算法刷题题解笔记] 洛谷 P1003 [NOIP2011 提高组] 铺地毯 [枚举]
|
存储 机器学习/深度学习 测试技术
【浙江大学PAT真题练习乙级】1008 数组元素循环右移问题 (20分)真题解析
【浙江大学PAT真题练习乙级】1008 数组元素循环右移问题 (20分)真题解析
103 0
ACM刷题之路(八)数论-取余 停车位划分
ACM刷题之路(八)数论-取余 停车位划分
高职考技能提升教程010期 回文数(对称数)
高职考技能提升教程010期 回文数(对称数)
|
机器学习/深度学习 算法
【第十五届蓝桥杯备赛(bushi,写文凑个数)】蓝桥OJ---长草
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 BFS Flood Fill算法
181 0
|
机器学习/深度学习 人工智能
【第十五届蓝桥杯备赛(bushi,写文凑个数)】蓝桥OJ---排列序数
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 DFS
93 0