尝试递归方法:
我建议使用之间的天然对应功率设定的序列,并从该组二进制数的0到2^n - 1,在这里n是序列的长度.
在你的情况下,n是4,所以考虑0 = 0000.. 15 = 1111; 其中1,二进制表达式中有a 包含序列中的相应项.要实现这一点,您需要bitshift和二进制操作:
for (int i = 0; i < (1 << n); ++i) {
std::string item;
for (j = 0; j < n; ++j) {
if (i & (1 << j)) {
item += sequence[j];
}
}
result.push_back(item);
}
Run Code Online (Sandbox Code Playgroud)
还要考虑如何处理序列的时间长于(可以int考虑溢出和算术进位).