博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[百度2015春季实习生招聘附加题] 01排序
阅读量:5326 次
发布时间:2019-06-14

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

题目地址:

给定一个01串(仅由‘ 0’或‘1’组成的字符串),现在想把这个数字串排序成“非递减”有序序列,请问至少需要多少次交换(任意两个位置交换)? 

输入描述:
输入数据第一行是一个正整数T(T<=100),表示有T组测试数据;接下来的T行,每行给出01串。数据保证——50%的字符串长度在[1,100 ]95%的字符串长度在[1,10000]100%的字符串长度在[1,1000000]

输出描述:

对于每组测试数据,请输出排成“非递减有序序列”的最小交换次数。每组输出占一行。

 

输入例子:
30110110
输出例子:
011 题解:
因为输入的序列仅由0和1组成,现在要求排序成非递减序列,即”0”全部在左边,“1”全部在右边。 所以可以统计a[i]中"0"的个数num,那么从0到num中如果存在“1”,就必然存在一次交换,统计的从0到num中"1"的数量即为答案。 时间复杂度O(n)。100%数据规模max_length=1e6,可以AC。 代码:
1 #include
2 #include
3 #include
4 using namespace std; 5 const int N=1e6+131; 6 char a[N]; 7 int num; 8 9 int main()10 {11 int T;12 13 scanf("%d",&T);14 while(T--) {15 num=0;16 scanf("%s",a);17 int len=strlen(a);18 for(int i=0;i

 

 

转载于:https://www.cnblogs.com/sxiszero/p/4449614.html

你可能感兴趣的文章
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
CodeForces 605 E. Intergalaxy Trips
查看>>
TT8509: PL/SQL execution terminated; PLSQL_TIMEOUT exceeded
查看>>
华为十年
查看>>
android中关于的dpi,dp,dip的定义及转换
查看>>
thread msg
查看>>
【重点突破】——第三方绘图工具FusionCharts.js的使用详解
查看>>
C#中的反射
查看>>
NHibernate - ICriteria 查询[转 十年如一]
查看>>
linux 2.4.16 内核 strcmp详解
查看>>
python 全栈开发,Day67(Django简介)
查看>>
ML_入门
查看>>
vuex 的基本使用
查看>>
通过Python实现mysql查询数据库实例
查看>>
Python图形编程探索系列-09-tkinter与matplotlib结合案例
查看>>
Analysis of Web.xml in Hello1 project
查看>>
cloc 统计代码行数工具
查看>>
Scala学习——基础篇
查看>>
16.迭代器模式(Iterator Pattern)
查看>>
数据结构实验之链表六:有序链表的建立(SDUT 2121)
查看>>