标签:
输入一个字符串,输出该字符串的字符的所有组合,比如输入字符串: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; }
标签:
原文地址:http://www.cnblogs.com/AndyJee/p/4673586.html