例如:abc,它的所有字符组合为a,b,c,ab,ac,bc,abc
对于这种类型的题,想到的第一思路就是采用递归进行求解。
首先我们申请一个与所求字符串一样大小的字符数组s,用于保存各个字符的组合。
对于abc这样字符串的进行递归实现:
a,ab,abc,ac,b,bc,c
实现代码:
#include <stdio.h>
#include <string.h>
int Recursion(char *str,char *s, int len,int m,int n){
int i,j;
int flag;
for(i = n; i < len; i++){
if(i > n){//当i>n说明,递归结束
m--;
}
s[m] = str[i];
s[++m] = '\0';
printf("%s ",s);
if(i < len-1)
Recursion(str, s, len,m,i+1);
}
}
int main(void){
int len,i,j,m;
char s[6]={0};
char *str = "12345";
len = strlen(str);
Recursion(str,s,len,0,0);
}