使用C++ STL的next/prev_permutation函数生成全排列

使用C++ STL的next_permutation函数可以简单的枚举出一个升序排列的字符串的全排列,它包含在头文件里。

用C类型字符串举一个例子:

int main() {
    char str[] = "321";
    int len = strlen(str);
    sort(str, str + len);
    puts(str);
    while(next_permutation(str, str + len)) {
        puts(str);
    }
    return 0;
}

另外,prev_permutation函数可以枚举出一个降序排列的字符串的全排列。

为了使字符串更方便的被降序排列,我们引入:

sort(arr, arr + size, greater());

用以上的方式可以将int类型数组arr降序排列,同理可以使用在字符串上。

所以:

int main() {
    char str[] = "132";
    sort(str, str + strlen(str), greater());
    while(prev_permutation(str, str + strlen(str)))
        puts(str);
    return 0;
}

你可能感兴趣的:(使用C++ STL的next/prev_permutation函数生成全排列)