题目:
输入一个字符串,输出该字符串的字符的所有组合,比如输入字符串:abc,输出a、b、c、ab、ac、bc、abc。
思路:
回溯法
建立一个数组记录字符串中的字符出现与否,如字符串abc,int A[3],A={1,0,1},就代表字符ac。
代码:
#include <iostream>
#include <vector>
using namespace std;
void comb(char* str,vector<int> &result,int index,int n){
if(index==n){
for(int i=0;i<n;i++){
if(result[i]!=0)
cout<<str[i];
}
cout<<endl;
return;
}
result[index]=0;
comb(str,result,index+1,n);
result[index]=1;
comb(str,result,index+1,n);
}
void combination(char* str,int n){
vector<int> result(n,0);
comb(str,result,0,n);
}
int main()
{
char str[4]="abc";
combination(str,3);
return 0;
}