1

我对 C++ 编程没有太多经验,我想做的是以下几点:

1) 创建一个以字符数组为输入的函数(例如'abb')

2) 该函数将计算 char 数组的所有 premutations 并将它们存储在一个向量中

3) 该函数将返回这个 char 数组向量

谁能给我一个简单的例子,如何在 C++ 中做到这一点?我用谷歌搜索,但找不到我正在寻找的确切内容:P

例如,输入将是“abb”,函数将返回一个包含字符数组的向量:“abb”、“bab”和“bba”

4

1 回答 1

3

您可以使用next_permutation

std::vector<std::vector<char>> p(std::vector<char> v)
{
    std::vector<std::vector<char>> result;

    std::sort(v.begin(), v.end());
    do
    {
        result.push_back(v);  // result.emplace_back(v);
    }
    while(std::next_permutation(v.begin(), v.end()));

    return result;
}

要使用:

auto v = p({'a','b','c'});

for (auto &c : v)
{
    for (auto &x : c)
        cout << x;
    cout << "\n";
}

输出:

abc
acb
bac
bca
cab
cba
于 2013-11-04T08:35:15.843 回答