利用linux对向量排序,C++实现按1的个数排序

题目内容:有一些0、1字符串,将其按1的个数的多少的顺序进行输出。

输入描述:本题只有一组测试数据。输入数据由若干数字组成,它是由若干个0和1组成的数字。

输出描述:对所有输入的数据,按1的个数进行生序排序,每行输出一个数字。

题目分析:

(1)定义一个string型向量容器存储输入的数据;定义一个string型变量作为向量容器的元素;定义排序方法,若‘1’的个数不相等则按‘1’的个数从小到大的顺序返回,否则按字符串从小到大的顺序返回

(2)从键盘读入字符串,将读入的每个字符串插入向量容器

(3)对向量容器中的元素按照设定的比较函数进行排序

(4)遍历向量容器并输出每一个元素

参考代码:

#include

#include

#include

#include

#include

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

}

int main(int argc,char * argv[])

{

vector vstr;

string str;

while(cin>>str)

{

vstr.push_back(str);

if(cin.get()=='\n')

{

break;

}

}

sort(vstr.begin(),vstr.end(),myComp);

for(vector::iterator it=vstr.begin();it

cout<

system("pause");

return 0;

}

运行结果:

d77df948e6fe411b370603786cab11ef.png

推荐阅读:

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值