【发布时间】:2018-02-12 06:18:26
【问题描述】:
我想编写一个函数来生成所有长度为 n 且设置了 k 位的二进制模式。这些模式可以存储在二维数组中。看起来我需要递归来实现这一点。任何代码或伪代码都会有所帮助。
示例:如果 n=5 和 k=3 生成:
11100
11010
11001
10110
10101
10011
01110
01101
00011
00111
我发现了类似的帖子:Generate all binary strings of length n with k bits set,但建议的解决方案计算所有 2^k 组合。
【问题讨论】:
-
这肯定是和stackoverflow.com/questions/46023719/… 相同的问题,只是几个小时前问的? (递归请求除外,这对于高效实现来说绝对不是必需的。)
-
此外,您链接的问题的已接受答案 not 会生成所有 2^k 组合。你试过了吗?
-
@rici 对我链接到的问题的接受答案,将数字作为输入:unsigned int v; // 当前位的排列 unsigned int w; // 下一个位排列
-
@David,那个参数 v 只是前面的排列。用第一个数字调用它很容易,然后用函数返回的前一个结果继续调用它。该问题还有其他几个有用的答案。这是一个骗局。
标签: algorithm recursion binary bit-manipulation