有一些 01
字串,将其按 11 的个数的多少的顺序进行输出。如果 11 的数量相等,则按照出现的先后顺序排序。
输入格式
输入数据有若干行组成。第一行是一个数 n(1≤n≤100),代表串的个数。然后 n行每一行是一 个 01 串,每个字符串长度不超过 200 。
输出格式
重新排列 01
串的顺序。使得串按题目描述的方式排序。
Sample 1
Input | Output |
---|---|
6 10011111 00001101 1010101 1 0 1100 | 0 1 1100 00001101 1010101 10011111 |
Time limit | 1000 ms |
Memory | 131072 kB |
话不多说,上代码:
#include<bits/stdc++.h>
using namespace std;
struct lyc {
char x[201];
int b;
int id;
} a[100];
bool cmp(lyc i,lyc j) {
if(i.b==j.b)
return i.id<j.id;
return i.b<j.b;
}
int main() {
int n;
cin>>n;
for(int i=0; i<n; i++) {
cin>>a[i].x;
a[i].id=i;
for(int j=0; j<strlen(a[i].x); j++)
if(a[i].x[j]=='1')
a[i].b++;
}
sort(a,a+n,cmp);
for(int i=0; i<n; i++)
cout<<a[i].x<<endl;
}