| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4289 人关注过本帖, 4 人收藏
标题:今天的周赛题,真的是听不懂,求教
只看楼主 加入收藏
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
结帖率:95.65%
收藏(4)
已结贴  问题点数:5 回复次数:76 
今天的周赛题,真的是听不懂,求教
Description

Sorting is one of the most frequently performed computational tasks. Consider the special sorting problem in which the records to be sorted have at most three different key values. This happens for instance when we sort medalists of a competition according to medal value, that is, gold medalists come first, followed by silver, and bronze medalists come last.

In this task the possible key values are the integers 1, 2 and 3. The required sorting order is non-decreasing. However, sorting has to be accomplished by a sequence of exchange operations. An exchange operation, defined by two position numbers p and q, exchanges the elements in positions p and q.

You are given a sequence of key values. Write a program that computes the minimal number of exchange operations that are necessary to make the sequence sorted.

Input

Line 1: N (1 <= N <= 1000), the number of records to be sorted
Lines 2-N+1: A single integer from the set {1, 2, 3}

Output

A single line containing the number of exchanges required

Sample Input


9
2
2
1
3
3
3
2
3
1
Sample Output


4
Source
搜索更多相关主题的帖子: 今天 gold performed different possible 
2012-07-21 20:10
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 20:11
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 
具体的意思就是,计算给这个数列排序,从小到达,计算最小的交换次数。。

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 20:13
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 
help me

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 20:14
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 
beyondyf 。。。TonyDeng。。。 demonleer 。。。在不啊

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 20:21
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 
help 。。。思路是统计1,2,3个数,然后看1该在的位置,2该。。。。
但听到后面还是不懂。。。。

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 20:29
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 21:54
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 
具体的意思就是,计算给这个数列排序,从小到达,计算最小的交换次数。。

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 21:55
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:5 
举个小例子嘛。

比如给定一个数列:
S(S) = {1, 3, 2}, 那么如何给他排序呢? 这个时候我们的目标是把给定的数列排成S(D)= {1, 2, 3},那么我们就依次比较S(S)和S(D)的每个元素:

从第一个开始,发现都是1,不用比较。开始比较第二个,发现一个是3,一个是2,那么我们就把3换到S(S)这个数列中最后一个2的位置。这里的S(S)里只有一个2,所以交换一下就可以了。

如果S(S) = {1,3,2,1,1,2}这样的数列呢?那么我们先要明确,我们的S(D)是多少,那么我们就要统计1的个数,2的个数。统计完毕以后我们就很容易得到S(D) = {1,1,1,2,2,3}。

跟上面一样,我们从S(S)和S(D)的第一个元素开始比较:

1. 第一个元素都是1,比较第二个元素;

2. 第二个元素S(S)里是3,而S(D)里的第二个元素是1,那么我们就把S(S)里的3和S(S)里最后一个1交换位置,得到S(S) = {1,1,2,1,3,2}。

3. 第三个元素S(S)里是2,而S(D)里的第三个元素是1,那么我们就把S(S)里的2和S(S)里最后一个1交换位置,得到S(S) = {1,1,1,2,3,2}。

4. 第四个元素两个集合相同,跳到第5个元素。

5. 第五个元素S(S)里是3,而S(D)里的第五个元素是2,那么我们就把S(S)里的3和S(S)里最后一个2交换位置,得到S(S) = {1,1,1,2,2,3}。

希望妹纸能明白,代码就不写了。
2012-07-21 22:00
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:0 
回复 9楼 demonleer
,看明白了,但是为什么总是要最后一个,拿最后一个来交换为什呢是最少次数。。。

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-07-21 22:16
快速回复:今天的周赛题,真的是听不懂,求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057503 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved