这道题很多坑,详细看我的xd函数

#include <bits/stdc++.h>
using namespace std;
vector<string> xd (vector<string>& str, string s) {
	vector<string> result;
	int n = s.size();
	for (int i = 0; i < str.size(); i++) {
		int tem = str[i].size();
		if (tem != n || str[i] == s) continue;
		else {
			int flag = 0;
			vector<int> num1(26,0);
			for (int j = 0; j < n; j++) {
				num1[str[i][j] - 'a'] ++;
			}
			for (int j = 0; j < n; j++) {
				num1[s[j] - 'a'] -= 1;
				if (num1[s[j] - 'a'] < 0) {
				flag = 1;
				break;
				}
			}
			if (!flag) {
				result.push_back(str[i]);
				//cout << str[i] << endl;
			}
		}
	}
	return result;
}
int main () {
	int n;
	cin >> n;
	vector<string> str(n);
	vector<string> result;
	for (int i = 0; i < n; i++) {
		cin >> str[i];
	}
	string s;
	int k;
	cin >> s >> k;
	result = xd(str, s);
	cout << result.size() <<endl;
	sort (result.begin(), result.end());
	if (k <= result.size()) {
		cout << result[k - 1] << endl;
	}
	return 0;
}