您的位置:首页 > 其它

南邮 OJ 1024 01排序

2015-08-03 10:39 267 查看


01排序

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 935            测试通过 : 351 

比赛描述

将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。

输入

输入数据中含有一些01串,01串的长度不大于256个字符。

输出

重新排列01串的顺序。使得串按基本描述的方式排序。

样例输入

10011111

00001101

1010101

1

0

1100

样例输出

0

1

1100

1010101

00001101

10011111

题目来源

ZJUT

#include <iostream>
#include <string>
#include <algorithm>
#define MAXNUM 256
using namespace std;

bool compareBy1s(string str0,string str1){
if(count(str0.begin(),str0.end(),'1')<count(str1.begin(),str1.end(),'1')){
return 1;
}else if(count(str0.begin(),str0.end(),'1')>count(str1.begin(),str1.end(),'1')){
return 0;
}else{
return str0<str1;
}
}
bool compare(string str0,string str1){
if(str0.length()<str1.length()){
return 1;
}else if(str0.length()>str1.length()){
return 0;
}else{
return compareBy1s(str0,str1);
}
}
int main(void){
string str[MAXNUM];
int i=0,n=0;
while(cin>>str[n++]);
--n;
stable_sort(str,str+n,compare);
for(i=0;i<n;++i){
cout<<str[i]<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  南邮OJ ACM 01排序