全家福(C++)!?!


描述
"ACM"家里的辈分是按找字典序排序的,

"ACM"是家里辈分最小的还(谐音)子,

"MCA"是家里辈分最大的还(谐音)子。



给定一个小朋友的名字,请你按找字典序从辈分最小的还(谐音)子开始,把这个小朋友家里全部的还(谐音)子的名字都输出.


输入
一个由英文字母组成的字符串,长度不超过10。


输出
按照题目要求输出,每个名字一行。


输入样例 1 

acm
输出样例 1

acm
amc
cam
cma
mac
mca
语言:C++
求解答!
@CSDN-Ada助手
 
#include <iostream>
#include <algorithm>
using namespace std;
void method(string name, string prefix) {
    if (name.length() == 0) {
        cout << prefix << endl;
        return;
    }
    for (int i = 0; i < name.length(); i++) {
        string newPrefix = prefix + name[i];
        string newName = name.substr(0, i) + name.substr(i + 1);
        method(newName, newPrefix);
    }
}

int main() {
    string name;
    cin >> name;
    sort(name.begin(), name.end());
    method(name, "");
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【以下回答由 GPT 生成】

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

// 判断两个字符串是否谐音
bool isHomophone(const string& s1, const string& s2) {
    string sorted_s1 = s1;
    string sorted_s2 = s2;
    sort(sorted_s1.begin(), sorted_s1.end());
    sort(sorted_s2.begin(), sorted_s2.end());

    return sorted_s1 == sorted_s2;
}

// 递归生成所有谐音子名字
void generateHomophones(const string& name, const string& current, int length) {
    if (current.length() == length) {
        cout << current << endl;
        return;
    }

    for (int i = 0; i < name.length(); i++) {
        string next = current + name[i];
        if (isHomophone(next, name) && next.find(current) == string::npos) {
            generateHomophones(name, next, length);
        }
    }
}

// 排序并输出谐音子名字
void sortAndPrintHomophones(const string& name) {
    string sorted_name = name;
    sort(sorted_name.begin(), sorted_name.end());

    for (int length = 3; length <= sorted_name.length(); length++) {
        generateHomophones(sorted_name, "", length);
    }
}

int main() {
    string name;
    cin >> name;

    sortAndPrintHomophones(name);

    return 0;
}

将以上代码保存为cpp文件,使用C++编译器编译运行即可输出结果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^