C语言实现字符串排列组合
在日常编程中,我们经常会遇到需要对给定字符串进行排列、组合等操作的情况。下面介绍一种使用C语言实现字符串排列组合的方法。
算法思路:
首先,为了方便递归调用,我们定义一个函数permutations,它的第一个参数是要处理的字符串str,第二个参数是当前正在处理的字符位置begin。
对于每个字符位置begin,我们先将该位置的字符与第一个位置交换,然后递归调用permutations函数,即对剩余的n-1个字符做全排列。等到递归回来时,需要把原来交换过的字符再换回来(还原)。接下来,我们把第begin位置的字符换成第二个、第三个……直到最后一个字符的位置,重复上述步骤,可以得到所有可能的排列组合。
代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swap(char* a, char* b){
char temp = *a;
*a = *b;
*b = temp;
}
void permutations(char* str, int begin, int end){
if (begin == end){
printf("%s\n", str);
}
else{