【发布时间】:2018-05-17 07:28:31
【问题描述】:
我试图找到一个字符串的所有可能的字谜,并仅使用递归将它们存储在一个数组中。
我卡住了,这就是我所拥有的。
int main()
{
const int MAX = 10;
string a = "ABCD";
string arr[10];
permute(arr, a, 0, a.size(), 0);
return 0;
}
void permute(string arr[], string wrd, int firstLetter, int lastLetter, int it)
{
if (firstLetter == lastLetter)
*arr = wrd;
else
{
swap(wrd[firstLetter], wrd[it]);
permute(arr, wrd, firstLetter + 1, lastLetter, it++);
}
}
顺序无关紧要。 例如:字符串“abc”; 数组应该有:abc、acb、bca、bac、cab、cba
编辑:我试图找到一个单词的所有排列并将它们插入一个数组而不使用循环。
【问题讨论】:
-
嗯,对于初学者来说,四个字母的单词会有 24 个不同的字谜。尝试将它们记录到
string arr[10]会产生令人毛骨悚然的结果。 -
字谜是单词。这些是排列,而 C++ 恰好有排列的标准算法。
-
@chris 使用 STD 带走了所有编码的乐趣。
-
可以有重复的字母吗?