三值排序
来源:互联网 发布:乐思网络信息采集系统 编辑:程序博客网 时间:2024/05/14 21:53
这道题我是真懵了,什么贪心,我可一点没看出来。
原文地址:http://www.jianshu.com/p/4297e46d8a12
排序是一种很频繁的计算任务。一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候。在这个任务中可能的值只有三种1,2和3。我们用交换的方法把他排成升序的。
写一个程序计算出,计算出的一个包括1、2、3三种值的数字序列,排成升序所需的最少交换次数。
输入第1行为类别的数量N(1≤N≤1000)
输入第2行到第N+1行,每行包括一个数字(1或2或3)。
输出包含一行,为排成升序所需的最少交换次数。
样例输入
9221333231
样例输出
4
Scanner scan=new Scanner(System.in);int count=0;//记录总数int num=scan.nextInt();int array[]=new int[num];int a=0,b=0,c=0;for(int i=0;i<num;i++){array[i]=scan.nextInt();if(array[i]==1)a++;else if(array[i]==2)b++;else c++;}for(int i=0;i<a;i++){if(array[i]!=1)count++;}int b1=0,c1=0;for(int i=a;i<a+b;i++){if(array[i]!=2&&array[i]!=1)b1++;}for(int i=a+b;i<a+b+c;i++){if(array[i]!=3&&array[i]!=1)c1++;}System.out.println(count+Math.max(b1, c1));
164ms19744kBjava
#include<iostream>using namespace std;int main() {int arr[1000];int num;int a = 0, b = 0, c = 0;cin >> num;for (int i = 0; i < num; i++){cin >> arr[i];if (arr[i] == 1)a++;else if (arr[i] == 2)b++;elsec++;}int count = 0;int c1 = 0, b1 = 0;for (int i = 0; i < num;i++) {if (i < a&&arr[i] != 1)count++;else if (i>=a&&i < a+b && arr[i] == 3)b1++;else if (i>=(a+b)&&i < a+b+c&&arr[i] != 1 && arr[i] == 2)c1++;}int max = b1 > c1 ? b1 : c1;cout << (count + max);}
阅读全文
0 0
- 三值排序
- 三值排序
- 计蒜客---三值排序
- 三值排序
- 三值排序
- 【其他】【RQNOJ】三值排序
- 2.1 sort3三值排序
- usaco三值的排序
- USACO2.1.3 三值排序
- 三值排序(33)
- 三值排序(计蒜客)
- 排序(三)-选择排序
- 排序(三)---归并排序
- 排序三:选择排序
- 数据结构值排序算法(三)-快速排序
- 排序算法值三 —— 希尔排序
- 贪心——【三值的排序】
- 计蒜客 难题题库 027 三值排序
- 一个四则运算的小小计算器
- 处理JavaScript异常的正确姿势
- 使用axis2解析wsdl生成Webservice客户端代码
- 关于python文件操作
- oracle 数据导出 备注(comment)乱码问题解决办法
- 三值排序
- Free Pascal介绍
- mybatis
- spring中切入点表达式
- Android应用保存图片到系统图库那些事儿
- Tomcat工作原理
- Mac 安装 python3 , pip3 , pygame
- Eclipse连接到MYSQL数据库的操作
- android inflater详解以及源码解析