字符串
1、输出字符串的所有组合
位运算,提高效率。
构造一个长度为 n 的 01 字符串(或二进制数)表示输出结果中是否包含某个字符。例如 “001” 表示,只包含 c,即输出结果为 c
本题要求输出 001 ~ 111 这 2^n - 1 个组合对应的字符串。
#include<iostream>
using namespace std;
void combination(char* string)
{
int length = strlen(string);
int n = 1 << length;//1向左移length位,变为1000,共length+1位.
for (int i = 1; i < n; i++)//若length等于3,则从1到7,既是所有可能取到的结果
{
int j = 1 << (length - 1);
int index = 0;
while (j >= 1)
{
if (i & j) //位与运算。比如011与010位与的结果为010,为2,不是0所以为真
cout << *(string + index);
index++;
j = j >> 1;
}
cout << endl;
}
}
int main()
{
char string[] = "abc";
combination(string);
}