注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

按 1 的个数排序  

2014-03-17 22:27:54|  分类: STL ACM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
有一些 0、1 字符串,将其按 1 的个数的多少的顺序进行输出。
输入描述:本题只有一组测试数据。输入数据由若干行组成,每行是一个数字,它是
由若干个 0 和 1 组成的数字。
输出描述:对所有输入的数据,按 1 的个数进行升序排序,每行输出一个数字。
输入样例
10011111
00001101
1010101
1
0
1100
输出样例
0
1
1100
00001101
1010101
10011111

#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');//这种找一的方法多么的简单啊,stl 就是那么的强大啊
//彻底修改排序规则,只按 1 的数量排序,
//如果 1 的数量相等,则按出现的先后顺序
//否则,会按 ASCII 码大小排序
//只能用“>”或“<”,不能用“=”
return c1!=c2?c1<c2:c1<c2;
}
int main(int argc, char* argv[])
{
ifstream cin("aaa.txt");
vector<string>vstr;
string str;
while(cin>>str)
{
vstr.push_back(str);
}
sort(vstr.begin(),vstr.end(),myComp);
for(vector<string>::iterator it=vstr.begin();it<vstr.end();it++)
cout<<*it<<endl;
return 0;
}


  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017