C++实现按1的个数排序
题目内容:有一些0、1字符串,将其按1的个数的多少的顺序进行输出。
输入描述:本题只有一组测试数据。输入数据由若干数字组成,它是由若干个0和1组成的数字。
输出描述:对所有输入的数据,按1的个数进行生序排序,每行输出一个数字。
题目分析:
(1)定义一个string型向量容器存储输入的数据;定义一个string型变量作为向量容器的元素;定义排序方法,若‘1’的个数不相等则按‘1’的个数从小到大的顺序返回,否则按字符串从小到大的顺序返回
(2)从键盘读入字符串,将读入的每个字符串插入向量容器
(3)对向量容器中的元素按照设定的比较函数进行排序
(4)遍历向量容器并输出每一个元素
参考代码:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm> using namespace std;
bool myComp(const string &s1,const string &s2)
{
int c1=count(s1.begin(),s1.end(),'1');
int c2=count(s2.begin(),s2.end(),'1');
return c1!=c2?c1<c2:s1<s2;
}
int main(int argc,char * argv[])
{
vector<string> vstr;
string str;
while(cin>>str)
{
vstr.push_back(str);
if(cin.get()=='\n')
{
break;
}
}
sort(vstr.begin(),vstr.end(),myComp);
for(vector<string>::iterator it=vstr.begin();it<vstr.end();it++)
cout<<*it<<endl;
system("pause");
return 0;
}
运行结果:
C++实现按1的个数排序的更多相关文章
- POJ 2388 Who's in the Middle(水~奇数个数排序求中位数)
题目链接:http://poj.org/problem?id=2388 题目大意: 奇数个数排序求中位数 解题思路:看代码吧! AC Code: #include<stdio.h> #in ...
- 对三个数排序 Exercise06_05
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:对三个数排序 * */ public class Exercise06_0 ...
- JAVA 基础编程练习题34 【程序 34 三个数排序】
34 [程序 34 三个数排序] 题目:输入 3 个数 a,b,c,按大小顺序输出. 程序分析:利用指针方法. package cskaoyan; public class cskaoyan34 { ...
- java例题_34 用指正对三个数排序
1 /*34 [程序 34 三个数排序] 2 题目:输入 3 个数 a,b,c,按大小顺序输出. 3 程序分析:利用指针方法. 4 */ 5 6 /*分析 7 * 指针方法的本质是按地址传值,将a,b ...
- 排序算法用C++的基本算法实现十个数排序
本文个人在青岛喝咖啡的时候突然想到的...近期就有想写几篇关于排序算法的文章,所以回家到之后就奋笔疾书的写出来发布了 冒泡排序法 道理: 它重复地访问过要排序的数列,一次比较两个元素,如果他们的顺序错 ...
- 用C++的基本算法实现十个数排序
冒泡排序法 原理: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 冒泡排序算法的运作如下 ...
- C++程序设计实践指导1.7超长数列中n个数排序改写要求实现
改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...
- Java50道经典习题-程序34 三个数排序
题目:输入3个数a,b,c,按大小顺序输出. import java.util.Scanner; public class Prog34 { public static void main(Strin ...
- 【C语言】将输入的10个数排序
代码: #include <stdio.h> int main() { ], t; int i, j, max; printf("请输入10个数:\n"); ; i & ...
随机推荐
- layer.open如何关闭自身弹出窗口
1. 弹出窗口中本身可以添加按钮事件如下: layer.open({ title: '打印' ,type: 2 ,content: [ctx + '/saleOrder/eorderEdit?orde ...
- git 服务器新建仓库 远程仓库
Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用 ...
- C#内置泛型委托:Action委托
1.什么是Action泛型委托 Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声明自定义的委托.封 ...
- jQuery(二):jQuery选择器
jQuery选择器类似于CSS选择器,用来选取网页中的元素.例如: $("h3").css("background-color","red" ...
- Docker run 命令的使用方法
[编者的话]在Docker中,run应该是用户使用最多的命令了,很多读者反馈不是很明白run命令的用法,而且相关的书籍.中文资料中对run命令的描述也不是非常完整,所以DockerOne组织翻译了Do ...
- im ui框架调研,对比
1, https://github.com/jpush/aurora-imui 极光的 支持 Android/iOS/RN 提供了消息列表.输入视图 功能不多, 2,https://github.co ...
- Android Studio生成keystore签名文件步骤讲解
Android App打包时要用到签名文件,Android Studio生成签名文件步骤如下: Build---Generate Signed Apk...如图: 如果你的project中有2个或者2 ...
- sparkr脚本
test <- function(){ print(1) } test() 脚本内为单独函数时 调用脚本不执行 所以要在脚本内调取特定函数
- 初试PyOpenGL四 (Python+OpenGL)GPU粒子系统与基本碰撞
这篇相当于是对前三篇的总结,基本效果如下: 在初试PyOpenGL一 (Python+OpenGL)讲解Pyopengl环境搭建,网格,球体,第一与第三人称摄像机的实现.在初试PyOpenGL二 (P ...
- html5视频播放解决方案
关键词:html5 nativeapp webapp mp4 H.264 html5没学习之前总觉的很神秘.近期通过学习和研究html5有点成果,特总结分享给大家.众所周知应用开发分两种:一是原生的 ...