按1的个数排序
Description:
有一些01字串,将其按1的个数的多少的顺序进行输出。
Sample Input:
10011111
00001101
1010101
1
0
1100
Sample Output:
0
1
1100
00001101
1010101
10011111
1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 #include <vector> 5 using namespace std; 6 7 bool cmp(const string &a, const string &b){ 8 int n1 = count(a.begin(), a.end(), '1'); 9 int n2 = count(b.begin(), b.end(), '1'); 10 //彻底修改排序规则,只按1的数量排序, 11 //如果1的数量相等,则按出现的先后顺序排序 12 //否则会按ASCII码大小排序 13 //只能用“>”,或“<”,不能用“=” 14 return n1 != n2 ? n1 < n2 : n1 < n2; 15 } 16 17 int main(){ 18 string s; 19 vector<string> v; 20 while(cin >> s){ 21 v.push_back(s); 22 } 23 sort(v.begin(), v.end(), cmp); 24 for(vector<string>::iterator it = v.begin(); it != v.end(); it++){ 25 cout << *it << endl; 26 } 27 system("pause"); 28 return 0; 29 }
越努力,越幸运