For example, the combination of "abc" strings is a, B, c, AB, ac, bc, and abc. Here I use two methods: Bit operation:
# Include <iostream> # include <vector> using namespace std; // bit operation algorithm void main () {char * data = "abcd"; int length = strlen (data ); int last = (1 <length)-1; cout <last <endl; int I; for (I = 1; I <= last; I ++) {int currentIndex = length-1; while (currentIndex> = 0) {if (I & (1 <currentIndex) {cout <data [length-currentIndex-1];} -- currentIndex;} cout <endl ;}}
Recursive operation:
void algorithm(char* data,int num,vector<char>& result) { if(!num) { vector<char>::iterator it=result.begin(); for(it;it!=result.end();++it) { cout<<*it; } cout<<endl; return; } if(*data=='\0') return; result.push_back(*data); algorithm(data+1,num-1,result); result.pop_back(); algorithm(data+1,num,result); } void main() { char* data="abcd"; int length=strlen(data); vector<char> result; int i; for(i=1;i<=length;i++) { algorithm(data,i,result); } }