我想编写一个程序,你给出一个输入(位数n),你得到一个生成所有可能的二进制格雷码的矢量作为输出。
例如,
if n=2, results should be:
V= {00, 01, 10,11}
实际上我有兴趣一点一点地使用它们而不是整数。意思是我希望有一个2 D的整数数组,其中我在cols中有每个单词的行和位(如int)
答案 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}。只需计算一下这个集合。