c++ - 打印所有字符串,O(2^n) 算法

标签 c++ algorithm

假设有n个级别,在每个级别中你可以从两个可能的字符中选择一个,打印所有可能的字符串
例如:-
假设我们有 3 个级别:-
一级:- a b
level2 :- c d
level3 :- e f

可能的字符串是:- 1.王牌
2. acf
3.阿德
4. adf
5. 公元前
6. bcf
7. bde
8.bdf

我知道样本空间是 2^n,所以所需时间是 O(2^n),但我不知道如何对其进行编码。 有哪些可能的方法以及我必须阅读哪些主题才能解决此类问题?

最佳答案

有两个数量的选择使这很容易。将其压缩成位。像这样:

char buf[3];
for(unsigned i = 0; i < 10; ++i)
{
    buf[0] = i & 4 ? 'b' : 'a';
    buf[1] = i & 2 ? 'd' : 'c';
    buf[2] = i & 1 ? 'f' : 'e';

    std::string str = std::string(buf, 3);
}

关于c++ - 打印所有字符串,O(2^n) 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788458/

相关文章:

c++ - Xcode C++ : Build in Debug but not Release

algorithm - 通过网络同步计数器

c++ - 扩展命令行太长

c++ - 如何用特定符号查找和替换字符串中的所有字符 C++

c++ - 什么时候使用互斥体?

c++ - 为什么 std::vector 构造函数通过复制接受初始值设定项列表?

algorithm - 在哪里可以找到 "The Algorithm Design Manual"的解决方案?

python - 两个排序数组,2个元素的总和等于某个数

algorithm - 网店中的 "you might like these products"是如何实现的?

python - 要求从多套中各选一件的背包