格雷码 Gray
来源:互联网 发布:sql 用变量作为字段名 编辑:程序博客网 时间:2024/06/05 10:52
格雷码 Gray
格雷码定义: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)
格雷码的求解: 上一次求解到的Gray码, 按顺序给每一个都加上前缀0, 得到前一半,然后,将Gray码逆序,给每一个都加上前缀1就是答案。
例如:
n = 1
Gray: 0 1
n = 2
00 01 (顺序 0 1)
11 10 (逆序 1 0)
具体代码
#include <bits/stdc++.h>using namespace std;// Gray(n) = 前缀0 + 顺序Gray(n-1) 前缀1 + 逆序Gray(n-1)void getGrayCode(int arr[], int n){ if (n==1) { arr[1] = 0; arr[2] = 1; return; } // 获取 n-1 的格雷码 getGrayCode(arr, n-1); int k = 1<<(n-1); for(int i=k; i>0; i--) { // 逆袭加前缀 arr[2*k+1-i] = arr[i]+k; }}void printGrayCode(int arr[], const int n){ for(int i=1; i<=(1<<n); ++i) { //printf("%d\n", arr[i]); bitset<4> bit(arr[i]); cout<<bit<<" "; if ( i==(1<<(n-1)) ) // 一半时候进行换行 cout<<endl; } printf("\n");}int main(void){ int n = 4; int *code = new int[1<<10]; getGrayCode(code, n); printGrayCode(code, n); return 0;}
1 0
- 格雷码(GRAY)
- 【Gray格雷码】
- 格雷码 Gray
- Gray Counter (格雷码计数器)
- [LeetCode] 格雷码(Gray Code)
- Gray Code 格雷码 @LeetCode
- Gray Code 格雷码编码
- leetcode Gray Code 格雷码
- Gray Code 格雷码
- 格雷码(gray code)
- LeetCode-Gray Code(格雷码)
- Gray Code 格雷码
- leetcode89-Gray Code(格雷码)
- [lintcode] Gray Code,格雷码
- 格雷码Gray Code
- 格雷码(Gray Code)
- gray
- GRAY
- linux常用命令二之权限,搜索与帮助命令
- IIS下安装PHP
- Android APK安装常见错误列表
- 链表操作
- [ios]the file couldn't be opened because you don't have permission to view it
- 格雷码 Gray
- nginx源码分析1———进程间的通信机制五(文件锁)
- 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
- spring读取配置文件
- YUV格式学习:YUV444转换RGB24
- js改变html的原有内容
- Ext通过按钮创建一个Window实例代码
- 微信公众号开发学习
- C++基础---浅层及深层拷贝构造函数