生成所有二进制组合C ++

时间:2012-03-02 16:59:37

标签: c++ binary

我想编写一个程序,你给出一个输入(位数n),你得到一个生成所有可能的二进制格雷码的矢量作为输出。

例如,

if n=2, results should be:
V= {00, 01, 10,11}

实际上我有兴趣一点一点地使用它们而不是整数。意思是我希望有一个2 D的整数数组,其中我在cols中有每个单词的行和位(如int)

2 个答案:

答案 0 :(得分:2)

提示:num的格雷码为(num>>1) ^ num。浏览0..2^N-1范围的所有数字,并使用此简单公式计算其格雷码表示。

编辑另一个提示:将整数转换为二进制的最简单方法是使用bitset

bitset<N>((num>>1) ^ num).to_string()

答案 1 :(得分:2)

集合V等于{0,...,2 ^ n-1}。只需计算一下这个集合。