gpt4 book ai didi

c++ - 如何按排序顺序生成数组的所有排列?

转载 作者:IT老高 更新时间:2023-10-28 12:52:36 25 4
gpt4 key购买 nike

我有一个数组,用户可以插入一个字符串。

我有这个代码:

int main(){
char anagrama[13];
cin >> anagrama;
for(int j = 0; j < strlen(anagrama); j++){
cout << anagrama[j];
for(int k = 0; k < strlen(anagrama); k++){
if(j != k)
cout << anagrama[k];
}
cout << endl;
}
}

问题是我需要按排序顺序对字符串的所有排列

例如如果用户写:abc,输出必须是:

abc
acb
bac
bca
cab
cba

我的代码没有显示所有排列,也没有排序

你能帮帮我吗?

我需要在没有实现功能的情况下进行实现。

我想用递归函数,但我不知道怎么做。

这是一个例子: http://www.disfrutalasmatematicas.com/combinatoria/combinaciones-permutaciones-calculadora.html不重复和排序

最佳答案

在 C++ 中,您可以使用 std::next_permutation一个一个地进行排列。在第一次调用 std::next_permutation 之前,您需要按字母顺序对字符进行排序:

cin>>anagrama;
int len = strlen(anagrama);
sort(anagrama, anagrama+len);
do {
cout << anagrama << endl;
} while (next_permutation(anagrama, anagrama+len));

这里是 demo on ideone .

如果您必须自己实现排列,您可以 borrow the source code next_permutation,或者选择一种更简单的递归方式实现置换算法。

关于c++ - 如何按排序顺序生成数组的所有排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com