C++生成字母顺序排列的有效密码
#include
// 全局变量
int L, C;
vector
// 递归生成密码 void generatePasswords(int index, int vowelCount, int consonantCount) { // 递归终止条件 if (index == L) { // 检查密码是否有效 if (vowelCount >= 1 && consonantCount >= 2) { string validPassword = ""; for (char c : password) { validPassword += c; } validPasswords.push_back(validPassword); } return; }
// 递归生成密码
for (int i = 0; i < C; i++) {
password[index] = letters[i];
if (letters[i] == 'a' || letters[i] == 'e' || letters[i] == 'i' || letters[i] == 'o' || letters[i] == 'u') {
generatePasswords(index + 1, vowelCount + 1, consonantCount);
} else {
generatePasswords(index + 1, vowelCount, consonantCount + 1);
}
}
}
int main() { // 读取输入 cin >> L >> C; for (int i = 0; i < C; i++) { char c; cin >> c; letters.push_back(c); }
// 初始化密码数组
password.resize(L);
// 生成密码
generatePasswords(0, 0, 0);
// 按字母顺序排序密码
sort(validPasswords.begin(), validPasswords.end());
// 输出密码
int count = 0;
for (string validPassword : validPasswords) {
cout << validPassword << endl;
count++;
if (count >= 25000) {
break;
}
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/qvmX 著作权归作者所有。请勿转载和采集!