问题标题: 酷町堂:2793 二值排序 到底怎么做

0
0
已解决
熊潇然
熊潇然
初级启示者
初级启示者

题目链接: 酷町堂:2793

2793   二值排序

经验值:1200 时间限制:1000毫秒 内存限制:128MB

题目描述 Deion

现在有n个数,它们中的每一个都是1或者是2。现在希望序列中所有的1都排到2的前面。数字移动的方式是交换两个数字的位置(这两个数字可以不相邻)。请问最少要交换多少次才能达到目标?

输入描述 Input Deion

第一行,一个整数,n
一行,n个整数,每个数的值为1或2

输出描述 Output Deion

最少要交换多少次才能使所有的1都排到所有2的前面

样例输入 Sample Input

5

1 1 2 2 2

样例输出 Sample Output

0

数据范围及提示 Data Size & Hint

n≤100

 

 

求思路

求代码


0
已采纳
万睿言
万睿言
初级光能
初级光能

这一道题要用到贪心算法

    循环遍历1到n{
        输入a数组
        如果当前数a[i]等于1//记录1的个数
            计数器cnt自增一次
    }
    循环遍历1到cnt{
        如果当前数a[i]不等于//前cnt个数应该都是1,如果不是1那么就要发生改变,记录次数
            ans自增一次
    }
    c输出ans
0
陈俊霖
陈俊霖
新手天翼
新手天翼

首先循环算出1的数量n

然后检测前n个数中有几个2

然后输出最后算出的数字

 

0
0
0
万睿言
万睿言
初级光能
初级光能
如果是有5个数进行排序,那么
5
1 2 1 2 1-->1 1 1 2 2 
第2个2和第5个1交换即可

要将1和2交换到正确的位置上
1的数量cnt
前cnt个数必然是1
如果前cnt个位置上的数不会是1,必然要发生交换 

 

我要回答