在C ++中以字符重复打印所有排列
在这个问题中,我们给了一个n个字符的字符串,并且我们必须打印该字符串的所有字符排列。允许重复字符串的字符。排列的打印应按字母顺序(按字母顺序排序)进行。
让我们举个例子来更好地理解这个话题:
输入:XY
输出:XX,XY,YX,YY
要解决此问题,我们需要使用修复和递归逻辑。在这里,我们将在数组的第一个索引处固定一个元素,然后递归调用序列中的下一个元素。
让我们看一个实现示例,它将使您的解决方案清晰明了。
输入字符串XY。
将第一个元素固定在1索引处:X_
递归调用其他元素并填充:XX->XY
现在将下一个元素固定在index1:Y_
递归调用其他元素并填充:YX->YY
相同的逻辑可用于3,4,n长度的字符串。
示例
#include <iostream>
#include<string.h>
using namespace std;
void printPermutations(char *str, char* permutations, int last, int index){
int i, len = strlen(str);
for ( i = 0; i < len; i++ ) {
permutations[index] = str[i] ;
if (index == last)
cout<<permutations <<"\t";
else
printPermutations (str, permutations, last, index+1);
}
}
int main() {
char str[] = "ABC";
cout<<"All permutations of the string with repetition of "<<str<<" are: "<<endl ;
int len = strlen(str) ;
char permutations[len];
printPermutations (str, permutations, len-1, 0);
return 0;
}输出结果
All permutations of the string with repetition of ABC are:AAA AAB AAC ABA ABB ABC ACA ACB ACC BAA BAB BAC BBA BBB BBC BCA BCB BCC CAA CAB CAC CBA CBB CBC CCA CCB CCC
热门推荐
10 简短有内涵的祝福语
11 员工对同事祝福语简短
12 生日祝福语简短而有深意
13 酒店客人祝福语简短
14 送离职同事简短祝福语
15 新年祝福语长辈简短红包
16 圣诞简短祝福语给父母
17 给老师祝福语简短元旦
18 六一简短祝福语有哪些