#include <iostream>
using namespace std;
#include <vector>
#include <string>
#include <algorithm>
bool isBrother(string a, string b) {
if (a.size() != b.size()) {
return false;
}
if (a == b) {
return false;
}
sort(a.begin(), a.end());
sort(b.begin(), b.end());
if (a == b) {
return true;
}
return false;
}
int main() {
string str;
int dicNum;
int k;
vector<string> dic;
string letter;
vector<string> dicB;
cin >> dicNum;
for (int i = 0; i < dicNum; i++) {
cin >> str;
dic.push_back(str);
}
cin >> letter;
cin >> k;
for (auto& it : dic) {
if (isBrother(it, letter)) {
dicB.push_back(it);
}
}
sort(dicB.begin(), dicB.end());
cout << dicB.size() << endl;
if (k - 1 < dicB.size()) {
cout << dicB[k - 1] << endl;
}
}
注意一下输入的读取,输出的内容以及是否输出。
这题主要是巧用sort,既可以用来辅助判断是否为兄弟词,又可以用来给找出来的兄弟词按词典排序。
这个按词典排序也是个坑,我开始以为它的输入就叫词典排序的输入,但是其实是应该自己检查完后再排序

京公网安备 11010502036488号