假设有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/