01排序

来源:互联网 发布:linux权限最大的账户 编辑:程序博客网 时间:2024/06/05 07:42

01排序

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

描述

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

输入

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

输出

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

样例输入

10011111
00001101
1010101
1
0
1100

样例输出

0
1
1100
1010101
00001101
10011111

题目来源

ZJUT


分析:简便的写法——运用sort & atoi函数

#include<iostream>using namespace std;#include<algorithm>#include<string>//01排序bool compare(string str1,string str2){int num1=0, num2=0;if(str1.length() != str2.length())return str1.length() < str2.length();else{for(int i=0;i<str1.length();i++)if(str1[i] == '1')num1++; for(int i=0;i<str2.length();i++)if(str2[i] == '1')num2++; if(num1 != num2)return num1 < num2;elsereturn atoi(str1.c_str()) < atoi(str2.c_str());}}int main(){string s[10000]; string tmp; int N = 0;while(cin>>tmp)s[N++] = tmp;sort(s, s+N, compare);for(int i=0;i<N;i++)cout<<s[i]<<endl;return 0;}


0 0
原创粉丝点击