格雷码生成【grey code】

格雷码基础和生成的几种方法 1 格雷码: 1.1 格雷码引言: 在数字系统中,常要求代码按一定顺序变化。 在机器视觉里面,编码结构光也是按照一定的顺序进行变化,最常用的就是Binary,但是,二进制的纯粹的编码,由于二进制的进制关系(每个位是有权的),如果发生一个错码(在机器视觉里面,错码的发生可能是一个背景的干扰,也可能是测试物体的一个比较陡峭的轮廓变更),一个错码往往他的数字权重不是一位,比如二进制的最高为,错了一位,那么就是整个数值发生一半的变化。 去掉权重的好处就是,如果模拟量或者是采样的数据发生了一个微小的变化,在整 阅读详情

题目

The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:

00 - 0
01 - 1
11 - 3
10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example, [0,2,3,1] is also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.

解题思路

  递归生成码表
  这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造:
  1位格雷码有两个码字
  (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
  (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1

代码实现

package algorithms;

import java.util.LinkedList;
import java.util.List;

public class Solution {
    public static List<Integer> grayCode(int n) {
    	List<Integer> result = new LinkedList<Integer>();
    	result.add(0);
    	int t = 1;
    	for(int i = 0; i < n; i++) {
    		for(int j = result.size() - 1; j >= 0; j--) {
    			result.add(result.get(j) ^ t);
    		}
    		t <<= 1;
    	}
    	return result;
    }
    public static void main(String[] args) {
		System.out.println((grayCode(3).toString()));
	}
}

要点

利用位异或操作;

从低位到高位递归进行;


华为防火墙USG6000系列多ISP上网(通过WEB界面设置) 华为防火墙多ISP上网,内网分区上网。内网多网段不同上网方式。 阅读详情

相关推荐

陆地观测卫星数据服务平台深度体验:高分、中巴、资源系列影像的检索与下载技巧

本文深度解析国产陆地观测卫星数据服务平台的使用技巧,重点介绍高分、中巴、资源系列卫星影像的检索与下载方法。通过权限体系解析、高级检索策略、数据预处理等实战技巧,帮助用户高效获取高质量遥感数据,适用于环境监测、资源调查等多种应用场景。

eee77的博客 982

浅谈格雷码(Grey Code)在信息学竞赛中的应用

1.格雷码的概念 1.性质 格雷码(Grey Code),又叫循环二进制码或反射二进制码,是一种编码方式,它的基本特点是任意两个相邻的格雷码只有一位二进制数不同。 常用的二进制数与格雷码间的转换关系如下表: 从表中我们可以发现任意两个相邻的格雷码只有一位二进制数不同 2.转换方法 二进制数转格雷码的方法如下: 从左到右,每一位的格雷码值等于该位的二进制值异或(XOR)上该位左...

oier_forever的博客 1388

Python介绍与安装

Python介绍与安装

acegi13579的专栏 3224

格雷码的生成与解码

证明:已有n-1位格雷码序列,则可知n-1位格雷码序列逆序也满足相邻代码只有一位不同,且首尾相连,对逆序的所有代码左端补1不改变上述性质,将两段代码相接后连接处的两个代码只有最高位不同,首尾代码也只有最高位不同,所以得到的是n位格雷码。对n位二进制的码字,从右到左,以0到n-1编号,如果二进制码字的第i位和i+1位相同,则对应的格雷码的第i位为0,否则为1(当i+1=n时,二进制码字的第n位被认为是0,即第n-1位不变)通过观察或者推理都可以得出,格雷码的最高位和自然二进制码的最高位是相同的。

m0_54123999的博客 5853

深度可分离卷积(DepthwiseSeparableConvolution):Depthwise卷积与Pointwise卷积

深度可分离卷积不用多说,在轻量级网络架构方面是一个绕不开的话题,只要接触深度学习多多少少会接触。深度可分离卷积即DepthwiseSeparableConvolution,该卷积将一个常规卷积过程划分成两个完成Depthwise卷积和Pointwise卷积,在保证输出一样时,计算量大大降低。首先来看,一个常规卷积是怎么实现的。其示意图如果我们从通道数变换的角度来看,卷积就是将3通道的tensor变为了4通道的tensor,我们来看看深度可分离卷积是怎么实现通道的变化的。...

xu.hyj 1万+

ROSTCM6+Gephi的网络语义分析详细教程(附案例实战)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件,可用于各种图形和网络的可视化和探索,是最受欢迎的网络可视化软件之一。

m0_64336780的博客 1万+

可靠性编码之格雷码(Gray码)

可靠性编码之格雷码(Gray码)

butnotif的博客 3665

Python-编写点云处理软件(二)点云软件ui制作之仿CC界面

至本篇结束,我们已经能够获得一个有点模子的界面了,但是具体的功能还没有编写,后续的文章将逐渐完善功能。

weixin_43894929的博客 3953

迅速认识什么是格雷码,格雷码和二进制怎么进行转换

迅速认识什么是格雷码,为什么要使用格雷码,格雷码和二进制之间怎么转换

qq_41040989的博客 1893

6-Halcon-- var_threshold 函数功能(用于基于局部统计特性的动态阈值分割的算子)

var_threshold 是 HALCON 中用于基于局部统计特性的动态阈值分割的算子,特别适用于处理低对比度图像或纹理均匀但包含细微差异的场景。与 dyn_threshold 不同,它不依赖预处理生成的参考图像,而是直接在局部区域内计算灰度值的统计特性(均值和标准差),从而自适应调整阈值。

weixin_45590420的博客 1328

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

matlab 生成格雷码,格雷码(Grey Code)生成规则

(1)Grey码在FPGA实际应用中是实用的码,在8421BCD码累加计数器中,如果寄存器需要发生多位(两位或者以上)的跳变,会出现中间态,这样作为组合逻辑的输入是不稳妥的。下面看两个中间态的例子:这是累加器的状态转换时序观察,存在中间不希望的状态。如果作为组合逻辑的输入,状态有可能跑飞。左边0111 -> 0101 -> 1000,右边0101 -> 0111 -> 01...

weixin_30249151的博客 3199

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

格雷码Gray Code

http://blog.youkuaiyun.com/pipisorry/article/details/72356418格雷码简介  在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。格雷码(Gray Code)又称Grey Code、葛莱码、格莱码、戈莱码、循环码、反射二

皮皮blog 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

grey code 格雷码

题目描述The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequenc...

John Will的博客 1249

UVA11173 Grey Codes【位操作】

Gray hair is God’s graffiti. Bill Cosby     We are going to generate a sequence of integers in binary. Start with the sequence 0 1 —     Reflect it in the horiz...

海岛Blog 652

[leetcode] Grey Code

题目:(Backtracking) The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integernrepresenting the total number of bits in the code, pri...

weixin_30500105的博客 113

递归实现生成Grey码

腾讯2016研发笔试题1: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。 给定一个整数n,请返回n位的格雷码,顺序为从0开始。 测试样例: input:1 output:["0","1"] vector<string> Gray(int n){ vect...

weixin_34404393的博客 157

Convertion of grey code and binary 格雷码和二进制数之间的转换

摘自维基百科的转换代码:/* The purpose of this function is to convert an unsingned binary number to reflected binary Grey code. */ unsigned int binary2Grey(unsigned int num){ return (num&gt;&gt;1)^num...

weixin_42690125的博客 330

leetcode 89. Gray Code 按照index递归DFS解决 + Grey码生成公式 + 位运算直接计算

The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gr

JackZhangNJU的专栏 585

gray code(格雷码)

//3bits binary to gray code //-----binary-------to--------gray------ //------000------------------- 000------ //------001--------------------001------ //------010--------------------011------ /...

weixin_30600197的博客 347

089 Grey Code [Leetcode]

题目内容: The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the seq

miranda 516

UVa 11173 - Grey Codes

題目:為第n個格雷碼對應的數字。 分析:數學,遞歸。利用格雷碼的對稱性求解。             設f(n)為n的解,每次找到不小於n的2^k,然後遞歸計算2^(k+1)-n-1即可;             得到遞歸公式:f(n)= f(2^(k+1)-n-1)+ 2^k。 說明:又是好久没刷题了╮(╯▽╰)╭。 #include #include int value(int

小白菜又菜 683
上一篇: 【刷题笔记/剑指Offer】Part 3 (21-30)
下一篇: DAO初探
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值