算法Day28 二进制差异序列(格雷码)

二进制差异序列(格雷码)

Description

n 位二进制差异序列是一个由2^n个整数组成的序列,其中:
每个整数都在范围[0, 2^n - 1]内(含0和2^n - 1)
第一个整数是0
一个整数在序列中出现不超过一次
每对相邻整数的二进制表示恰好一位不同,且
第一个和最后一个整数的二进制表示恰好一位不同
给你一个整数n,返回任一有效的n位二进制差异序列,1≤n ≤ 16

Input

输入一个整数n

Output

输出二进制差异序列,每个数之间空格隔开

Sample

在这里插入图片描述

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int powN = (int) Math.pow(2, n);int[] grayCode = new int[powN];for (int i = 0; i < powN; i++) {grayCode[i] = toGrayCode(i);System.out.print(grayCode[i] + " ");}}public static int toGrayCode(int i) {return i ^ (i >> 1);}}

思路

首先,n位对应的格雷码不止一个
因此只需要找到一个格雷码输出即可

格雷码跟8421码一样,也是一种对数字进行二进制编码的方法,只是编码方法跟常见的8421二进制编码方法不一样。
例如:
n = 3 的 8421 编码和选取的一组格雷码

在这里插入图片描述

可以通过这组观察出特殊的规律
1、8421码最左边一位不变,保留下来成为格雷码的最左边一位;
2、从左边第二位开始,将8421码的每一位与它左边的一位相 异或 得到对应位的格雷码;
3.也就是将其与其右移一位进行异或操作(正数右移左补0)

因此可以采取

/**
*i指0-2^n数字
*/
int graycode = i ^ (i >> 1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267795.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sdxl-turbo:adversarial diffusion distillation

【AIGC第三十一篇】SDXL Turbo&#xff1a;一种实时的文本到图像生成模型 - 知乎【 SDXL Turbo通过采用全新的蒸馏技术&#xff0c;实现了最先进的性能&#xff0c;能够以前所未有的质量进行单步图像生成&#xff0c;将所需的步骤数量从50步减少到仅需一步。这种创新技术大大提…

cache教程 2.单机并发缓存

0.对原教程的一些见解 个人认为原教程中两点知识的引入不够友好。 首先是只读数据结构 ByteView 的引入使用是有点迷茫的&#xff0c;可能不能很好理解为什么需要ByteView。 第二是主体结构 Group的引入也疑惑。其实要是熟悉groupcache&#xff0c;那对结构Group的使用是清晰…

最大公因数,最小公倍数详解

前言 对于初学编程的小伙伴们肯定经常遇见此类问题&#xff0c;而且为之头疼&#xff0c;今天我来给大家分享一下&#xff0c;最大公因数和最小公倍数的求法。让我们开始吧&#xff01; 文章目录 1&#xff0c;最大公因数法1法2法3 2&#xff0c;最小公倍数3&#xff0c;尾声 …

UE引擎 LandscapeGrass 实现机制分析(UE5.2)

前言 随着电脑和手机硬件性能越来越高&#xff0c;游戏越来越追求大世界&#xff0c;而大世界非常核心的一环是植被&#xff0c;目前UE5引擎提供给植被生成的主流两种方式为 手刷植被和LandscapeGrass(WeightMap程序化植被)。当然UE5.3推出新一代PCGFramework 节点程序化生成框…

Nvdiffrast高性能可微渲染开发包

NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 Nvdiffrast 是一个 PyTorch/TensorFlow 库&#xff0c;为基于光栅化的可微渲染提供高性能基…

2023/12/11 作业

1.思维导图 2.作业 成果&#xff1a; 第一个头文件 #ifndef TEST3GET_H #define TEST3GET_H #include <QWidget> #include<QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class test3get; } QT_END_NAMESPACE class test3get : public QWidget { Q_OBJE…

Ubuntu Destktop 22.04 设置 ssh 超时时间

Ubuntu Destktop 22.04 使用 ssh 连接服务器时&#xff0c;发现一段时间不操作就会自动断开连接&#xff0c;解决方法如下&#xff1a; 打开 /etc/ssh/ssh_config 文件&#xff1a; sudo vim /etc/ssh/ssh_config在文件最后添加&#xff1a; # ssh 客户端会每隔 30 秒发送一…

pollfish平台现在还能做吗?

今年4月份开始&#xff0c;pollfish平台就已经出现大面积封控了。 很多网站直接封禁&#xff0c;让很多国内的问卷公司都直接倒闭了。 今天是12月12日&#xff0c;现在pollfish平台还是可以做的&#xff0c;但是大概率是做完结算不了的&#xff0c;也就是做了不给钱&#xff…

【每日一题】下一个更大元素 IV

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;单调栈优先队列 写在最后 Tag 【单调栈】【2023-12-12】 题目来源 2454. 下一个更大元素 IV 题目解读 在数组中找出当前元素右侧第二个比自己大的整数&#xff0c;如果不存在&#xff0c;那么第二个比自己大的整数为…

chronyc立即加载时间同步

不需要等待直接加载 chronyc makestep chronyc sources -v chronyd 服务正在使用的 NTP 源服务器的详细状态。这个命令会列出每个源服务器的 IP 地址&#xff0c;以及每个源服务器的状态和时间偏移量。通过这个命令&#xff0c;你可以看到你的系统是从哪些 NTP 服务器获取时间…

Linux操作系统学习(零)、计算机概论

计算机概论 指令集 CPU中含有多种指令集&#xff0c;指令集对于CPU运算具有指导和优化的硬程序&#xff0c;用来引导CPU进行加减运算和控制计算机操作系统的一系列指令的集合 常见的就有微指令集RISC和复杂指令集CISC RISC&#xff1a;包括ARM架构和PPC架构 CISC&#xff…

vscode报错cnpm : 无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅

报错 打开powershell 执行 Start-Process powershell -Verb runAs set-ExecutionPolicy RemoteSigned 选择 Y 完成