C++【描述】 输入一些01串,01串的长度不大于256个字符。将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。string串大小比较的默认标准是按各字符的ASCII码大小,如果算法中需要改变大小比较的标准,则要自己设计比较函数,使用在sort算法中。根据程序框架,完善程序,补充相应的内容,使之正确运行。 【输入】 输入第一行是正整数n,表示01串的个数。 下面n行是01串,每行一个01串。 【输出】 分行输出排序后的01串。 【输入示例】 6 10011111 00001101 1010101 1 0 1100【输出示例】 0 1 1100 1010101 00001101 10011111
时间: 2024-02-28 07:57:59 浏览: 89
以下是C++的代码实现:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 自定义比较函数,按长度、1的个数和ASCII码值排序
bool cmp(string a, string b) {
if (a.size() == b.size()) {
int cnt_a = count(a.begin(), a.end(), '1');
int cnt_b = count(b.begin(), b.end(), '1');
if (cnt_a == cnt_b) {
return a < b;
}
return cnt_a < cnt_b;
}
return a.size() < b.size();
}
int main() {
int n;
cin >> n;
vector<string> strs(n);
for (int i = 0; i < n; i++) {
cin >> strs[i];
}
sort(strs.begin(), strs.end(), cmp);
for (int i = 0; i < n; i++) {
cout << strs[i] << endl;
}
return 0;
}
```
程序先读入n和n个01串,然后使用vector存储这些字符串。自定义一个比较函数cmp,按照题目要求实现排序规则。最后使用sort函数进行排序,输出排序后的结果。
阅读全文