#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <assert.h>
using namespace std;
#if 0
void combination(const char *str, int m, vector<char> &res)
{
if(*str == '\0' && m != 0)
return;
if(m == 0)
{
for(int i = 0; i < res.size(); i++)
{
cout<<res[i];
}
cout << endl;
return;
}
res.push_back(*str);
combination(str+1, m-1, res);
res.pop_back();
combination(str+1, m, res);
}
void combination(const char *str)
{
assert(str != NULL && *str != '\0');
int len = strlen(str);
vector<char> res;
for(int m = 1; m <= len; m++)
{
res.clear();
combination(str, m, res);
}
}
#else
/*
* use binary and operation to print combinations of a string.
*/
void print(const char *str, int val)
{
int len = strlen(str);
for(int i = 0; i < len; i++)
{
if(val & (1<<i))
cout << str[i];
}
cout << endl;
}
void combination(const char *str)
{
int len = strlen(str);
for(int i = 1; i < (1 << len); i++)
{
print(str, i);
}
}
#endif
int main()
{
char *str = "abb";
combination(str);
//cout << "Hello world!" << endl;
return 0;
}
String combination
最新推荐文章于 2021-02-12 19:56:03 发布