GEEK编程练习— —格雷码

原创 2016年05月31日 22:50:42

题目

格雷码是一种二进制数值系统。在一组数的编码中,任意两个相邻的代码只有一位二进制数不同。给定一个非负整数n表示格雷码的位数,输出所有格雷码。
格雷码序列从0开始。格雷码不唯一。

输入

2

输出

00
01
11
10

分析

结果要输出二进制形式,可以使用bitset,这里设置最大位数为128位,可根据情况修改。格雷码公式为a ^ (a - 1)

代码

#include <iostream>
#include <bitset>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int maxsize = 1 << n;

    for(auto i = 0; i < maxsize; ++i)
    {
        bitset<128> result(i ^ (i >> 1));
        for(int j = n; j > 0; --j)
            cout<<result[j - 1];
        cout << endl;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GEEK编程练习— —最长回文子序列LPS

最长回文子序列LPS(Longest Palindromic Subsequence)也是编程题目里面经常出现的一种,但是更经常出现的是最长回文子串(Longest Palindromic Subst...

GEEK编程练习— —两个已序数组的中值

题目给定两个已经排序好的数组,找到两者的中值。分析首先把这个问题可以化成一般形式,寻找两个已序数组中所有元素的第k大元素。 1、最直接的解法,合并两个数组然后求第k大的元素。但是我们仅仅需要第k大的...

GEEK编程练习— —字符串匹配

题目给定字符串P和T,要求从T中找出与P相同的所有子串,并返回子串位置。输入str strsstrstrl输出1 5 8分析这其实是字符串模式匹配的问题。简单科普一下,模式匹配又可分为单模式匹配和多模...

GEEK编程练习— —数组去重

数组消除重复元素的题目一般来说都是最基本的,没什么太大的难度,而且大部分时候直接使用STL算法或容器的性质就可搞定。让我们来看题目吧~题目一输入一个已经排好序的数组,去除重复元素,输出新数组的长度。 ...

GEEK编程练习— —螺旋矩阵

今天的题目是一道回型矩阵的题目,也可以称为蛇形矩阵。输入一个正整数n,输出一个如下的回型矩阵 n=1的回型矩阵 1n=2的回型矩阵 1 2 4 3n=3的回型矩阵 ...

GEEK编程练习— —zigzag矩阵

题目输入矩阵规模N,输出zigzag矩阵。 zigzag顺序为下图所示 输入 5 输出 0 1 5 6 14 2 4 7 13 15 3 8 12 16 21 9 11 17 ...

GEEK编程练习— —连续出现最多子串

题目求一个字符串中连续出现次数最多的子串如果字符串是abcbcbcabc,这个连续出现次数最多的子串是bc,连续出现次数为3次。如果类似于abcccabc,则连续出现次数最多的子串为c,次数也是3次。...

递归生成格雷码----腾讯2016研发工程师编程题

[编程题] 生成格雷码 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。 ...

[bzoj 1081--SCOI2005]超级格雷码

规律 dfs

[SCOI2005]超级格雷码

Description著名的格雷码是指2n个不同n位二进制数(即0~2n-1,不足n位在前补零)的一个排列,这个排列满足相邻的两个二进制数的n位数字中最多只有一个数字不同(例如003和001就有一个数...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GEEK编程练习— —格雷码
举报原因:
原因补充:

(最多只允许输入30个字)