【2023下算法课设】Gray码的分治构造算法

Gray码是一个长度为2的序列,序列中无相同元素,且每个元素都是长度为n位的二进制位串,相邻元素恰好只有1位不同。例如长度为2³的格雷码为(000,001,011,010,110,111,101,100),设计分治算法对任意的n值构造相应的格雷码。 

传统的二进制系统例如数字3的表示法为011,要切换为邻近的数字4,也就是100时,装置中的三个位元都得要转换,因此于未完全转换的过程时装置会经历短暂的,010,001,101,110,111等其中数种状态,也就是代表着2、1、5、6、7,因此此种数字编码方法于邻近数字转换时有比较大的误差可能范围。格雷码的发明即是用来将误差之可能性缩减至最小,编码的方式定义为每个邻近数字都只相差一个位元,因此也称为最小差异码,可以使装置做数字步进时只更动最少的位元数以提高稳定性。 数字0~7的编码比较如下:

十进制   格雷码 二进制

0     000    000
1     001    001
2     011    010
3     010    011
4     110    100
5     111    101
6     101    110
7     100    111

 分治构造算法:

import java.util.Scanner;public class Solution {static int n, m;static int arr[][];private static void Gray(int m, int n) {if (n == 1) {arr[0][0] = 0;arr[1][0] = 1;return;}for (int i = 0; i < m / 2; i++) {arr[i][n - 1] = 0;//n位gray码的上半段为0arr[m - i - 1][n - 1] = 1;//n位gray码的上半段为1}Gray(m / 2, n - 1);for (int i = m / 2; i < m; i++) {for (int j = 0; j < n - 1; j++) {arr[i][j] = arr[m - i - 1][j];}}}private static void print(int[][] arr, int m, int n) {for (int i = 0; i < m; i++) {for (int j = n - 1; j >= 0; j--) {System.out.printf("%d ", arr[i][j]);}System.out.println();}}public static void main(String[] args) {Scanner cin = new Scanner(System.in);n = cin.nextInt();//gray码长度为nm = (int) Math.pow(2, n);//m个gray码arr = new int[m][n];Gray(m, n);print(arr, m, n);}
}

结果显示: 

 

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

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

相关文章

iOS设备信息详解

文章目录 ID 体系iOS设备信息详解IDFA介绍特点IDFA新政前世今生获取方式 IDFV介绍获取方式 UUID介绍特点获取方式 UDID介绍获取方式 OpenUDID介绍 Bundle ID介绍分类其他 IP地址介绍获取方式 MAC地址介绍获取方式正常获取MAC地址获取对应Wi-Fi的MAC地址 系统版本获取方式 设备型…

云HIS源码 云HIS解决方案 支持医保功能

云HIS系统重建统一的信息架构体系&#xff0c;重构管理服务流程&#xff0c;重造病人服务环境&#xff0c;向不同类型的医疗机构提供SaaS化HIS服务解决方案。 云HIS作为基于云计算的B/S构架的HIS系统&#xff0c;为基层医疗机构&#xff08;包括诊所、社区卫生服务中心、乡镇卫…

【华为数据之道学习笔记】6-7打造业务自助分析的关键能力

华为公司将自助分析作为一种公共能力&#xff0c;在企业层面进行了统一构建。一方面&#xff0c;面向不同的消费用户提供了差异性的能力和工具支撑&#xff1b;另一方面&#xff0c;引入了“租户”概念&#xff0c;不同类型的用户可以在一定范围内分析数据、共享数据结果。 1. …

【力扣100】199.二叉树的右视图

添加链接描述 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def rightSideView(self, root: Optional[Tr…

【贪心算法】专题练习一

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 前言 1.什么是贪心算法&#xff1f;——贪婪鼠目寸光 贪心策…

stat模块--python

在Python中,stat模块提供了一些用于解释os.stat(), os.lstat()和os.fstat()返回的结果的函数和常量。这些函数可以获取文件或文件系统节点的信息。 以下是一些stat模块中的函数和常量: stat.S_ISDIR(mode):如果mode是目录,则返回True。 stat.S_ISREG(mode):如果mode是普通…

在pyqt5界面中直接设置图标icon,不需要python程序代码!!一步搞定!!

小白轻松玩转pyqt5 1. 第一步&#xff1a;点击mainwindow,然后在windowicon中上传图片即可2. 设置成功总结&#xff08;对于小白入门pyqt5的一些忠告&#xff09; 1. 第一步&#xff1a;点击mainwindow,然后在windowicon中上传图片即可 2. 设置成功 总结&#xff08;对于小白入…

【Java 进阶篇】Jedis 操作 List:Redis中的列表类型

Redis中的列表&#xff08;List&#xff09;是一种有序的、可重复的数据类型&#xff0c;支持在列表的两端进行元素的插入和删除操作。Jedis作为Java开发者与Redis交互的工具&#xff0c;提供了丰富的API来操作List类型。本文将深入介绍Jedis如何操作Redis中的List类型数据&…

linux java环境安装

linux java1.8环境安装 下载 官方下载页面&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ 选择[jdk-8u391-linux-x64.tar.gz]下载&#xff0c;解压到/usr/local下。 # 建立软连接&#xff0c;以后如果更换版本&#xff0c;只需要解压&#xff0c;并更…

嵌入式-stm32-用PWM点亮LED实现呼吸灯

一&#xff1a;知识前置 1.1、LED灯怎么才能亮&#xff1f; 答&#xff1a;LED需要低电平才能亮&#xff0c;高电平是灯灭。 1.2、LED灯为什么可以越来越亮&#xff0c;越来越暗&#xff1f; 答&#xff1a;这是用到不同占空比来实现的&#xff0c;控制LED实现呼吸灯&…

陈可之油画|《远古河谷》,古老的三峡

《远古河谷》 尺寸&#xff1a;90x66cm 陈可之2002年绘 《远古河谷》是陈可之先生“白垩纪组画七千万年三峡原生映象”系列作品之一&#xff0c;通过细腻的笔触所呈现的神秘&#xff0c;去体会自然的历史、生命的历史以及人文的历史&#xff01; 三峡&#xff0c;沉淀了7000多…

AI赋能金融创新:ChatGPT引领量化交易新时代

文章目录 一、引言二、ChatGPT与量化交易的融合三、实践应用&#xff1a;ChatGPT在量化交易中的成功案例四、挑战与前景五、结论《AI时代Python量化交易实战&#xff1a;ChatGPT让量化交易插上翅膀》&#x1f4da;→ [当当](http://product.dangdang.com/29658180.html) | [京东…

web前端 JQuery下拉菜单的案例

浏览器运行结果&#xff1a; JQuery下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/17LXZigLQ8yau0toTGj4P_Q?pwd4332 提取码&#xff1a;4332 代码&#xff1a; <!doctype html> <html> <head> <meta charset"UTF-8"><…

南大通用使用jdbc插入time时间类型为00:00:00的问题解析

问题场景&#xff1a; 数据库数据类型&#xff1a; datetime HOUR TO SECOND -- 代表时分秒类型 hh:mm:ss&#xff0c;例如&#xff1a;10:58:13 在使用 PreparedStatement 进行set数据的时候执行结果为00:00:00 问题原因&#xff1a; 在setObject的时候&#xff0c;set的…

WPS复选框里打对号,显示小太阳或粗黑圆圈的问题解决方法

问题描述 WPS是时下最流行的字处理软件之一&#xff0c;是目前唯一可以和微软office办公套件相抗衡的国产软件。然而&#xff0c;在使用WPS的过程中也会出现一些莫名其妙的错误&#xff0c;如利用WPS打开docx文件时&#xff0c;如果文件包含复选框&#xff0c;经常会出…

自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏

首先说到脱敏问题,我相信在座的很多人都需要处理这样的场景,比如前端页面显示的身份证号、地址等敏感信息都需要脱敏处理,而hutool就有这样的一个工具来辅助我们完成对某些字段属性信息的脱敏,hutool没有现成的实现方式,只是借助这个工具帮助我们来具体实现 前言 我们在…

【Vue2+3入门到实战】(4)Vue基础之指令修饰符 、v-bind对样式增强的操作、v-model应用于其他表单元素 详细示例

目录 一、今日学习目标1.指令补充 二、指令修饰符1.什么是指令修饰符&#xff1f;2.按键修饰符3.v-model修饰符4.事件修饰符 三、v-bind对样式控制的增强-操作class1.语法&#xff1a;2.对象语法3.数组语法4.代码练习 四、京东秒杀-tab栏切换导航高亮1.需求&#xff1a;2.准备代…

RHCE9学习指南 第7章 服务管理

刚装好Windows系统时&#xff0c;需要进行一些优化&#xff0c;如下图所示。 右键单击所得菜单&#xff0c;可以看到一些按钮包括重启、停止、启动该服务。这些管理的是这个服务的当前状态。 双击服务名&#xff0c;在启动类型中设置的是系统启动时&#xff0c;这个服务要不要…

git之UGit可视化工具使用

一、下载安装UGit 链接&#xff1a;https://pan.baidu.com/s/1KGJvWkFL91neI6vAxjGAag?pwdsyq1 提取码&#xff1a;syq1 二 、使用SSH进行远程仓库连接 1.生成SSH密钥 由于我们的本地 git仓库和 gitee仓库之间的传输是通过SSH加密的&#xff0c;所以我们需要配置SSH公钥。才…

Python深度学习031:用纯python实现堆叠自编码器网络(不使用框架)

文章目录 1 堆叠自编码器介绍基本概念堆叠自编码器的特点应用领域2 自编码器和BP神经网络的区别1. 目标和用途2. 结构和组件3. 训练方式4. 应用场景3 纯python实现堆叠自编码器实现步骤示例代码4 示例代码详尽的解释导入库初始化参数前向传播计算损失