算法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.pswp.cn/news/214835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214835.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 13-2day 日志輪轉 日志目錄 輪轉參數

目錄 日志系統rsyslog一、處理日志的進程二、常見的日志文件(系統、進程、應用程序)日志優先級 三、logrotate日志輪轉1、配置日志輪轉的路徑2、日志配置路徑四 、案例 日志系統rsyslog Linux 系統內核和許多程序會產生各種錯誤信息、告警信息和其他的提示信息&#xff0c; 這…

【go語言實踐】基礎篇 - 流程控制

if語句 go里面if不需要括號將條件表達式包含起來&#xff0c;這與python也有點類似 if 條件表達式 { } if num > 18 {// ... } else if num > 20 {// ... } else {// ... }需要注意的是go支持在if的條件表達式中直接定義一個變量&#xff0c;變量的作用域只在if范圍內…

【網絡安全】CTF入門教程(非常詳細)從零基礎入門到進階,看這一篇就夠了!

一、CTF簡介 CTF&#xff08;Capture The Flag&#xff09;中文一般譯作奪旗賽&#xff0c;在網絡安全領域中指的是網絡安全技術人員之間進行技術競技的一種比賽形式。CTF起源于1996年DEFCON全球黑客大會&#xff0c;以代替之前黑客們通過互相發起真實攻擊進行技術比拼的方式。…

計算機丟失msvcp140dll怎么恢復?快速解決dll缺失問題

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“msvcp140dll丟失”。msvcp140.dll是一個動態鏈接庫文件&#xff0c;它包含了許多C標準庫函數的實現。這些動態鏈接庫文件是程序運行所必需的&#xff0c;它們包含了許多函數和資源&#xf…

圣誕新奇驚喜:利用 AI 技術幫助圣誕老人創建手寫信件

人工智能甚至正在接管北極的任務。在即將到來的圣誕節假期之前&#xff0c;圣誕老人和他的助手們迎來了一項革命性的技術支持。一群樂于助人的精靈采用了人工智能技術&#xff0c;制作出獨一無二、看似親手書寫的信件&#xff0c;以確保遵守圣誕老人的「北極標準」。 這些信件通…

C語言實現選擇排序

完整代碼&#xff1a; #include<stdio.h>//交換函數&#xff0c;交換兩個數 void swap(int *a,int *b){int temp;temp*a;*a*b;*btemp; }//選擇排序&#xff0c;從小到大 //參數&#xff1a;arr[]表示待排序數組&#xff0c;len表示該數組長度 void select_sort(int arr[…

愛智EdgerOS之深入解析安全可靠的開放協議SDDC

一、協議簡介 在 EdgerOS 的智慧生態場景中&#xff0c;許多智能設備或傳感器的生命周期都與 SDDC 協議息息相關&#xff0c;這些設備可能是使用 libsddc 智能配網技術開發的&#xff0c;也有可能是因為主要功能上是使用其他技術如 MQTT、LoRa 等但是設備的上下線依然是使用上…

圖的遍歷(深度優先遍歷 + 廣度優先遍歷)

目錄 &#x1f33c;廣度優先遍歷 &#xff08;1&#xff09;鄰接矩陣BFS &#xff08;2&#xff09;鄰接表BFS &#xff08;3&#xff09;非連通圖BFS &#xff08;4&#xff09;復雜度分析 &#x1f33c;深度優先遍歷 &#xff08;1&#xff09;鄰接矩陣的DFS &#x…

Caching the Application Engine Server 緩存應用程序引擎服務器

Caching the Application Engine Server 緩存應用程序引擎服務器 Application Engine caches metadata just like the application server. This caching enhances performance because a program can refer to the local cache for any objects that it uses. 應用程序引擎…

科技云報道:從數據到生成式AI,是該重新思考風險的時候了

科技云報道原創。 OpenAI“宮斗”大戲即將塵埃落定。 自首席執行官Sam Altman突然被董事會宣布遭解雇、董事長兼總裁Greg Brockman辭職&#xff1b;緊接著OpenAI員工以辭職威脅董事會要求Altman回歸&#xff1b;再到OpenAI董事會更換成員、Altman回歸OpenAI。 表面上看&…

深入解析Java中的String:特點、重要方法及源碼分析

Java的String類是Java語言中最常用的類之一。 作為一位Java高級工程師&#xff0c;了解String類的特性和方法對于編寫高效和優化的Java代碼至關重要。在這篇技術博客中&#xff0c;我們將深入探討String類的特點&#xff0c;介紹其中一些重要的方法&#xff0c;并分析其源碼以獲…

java--LocalDate、LocalTime、LocalDateTime、ZoneId、Instant

1.為什么要學習JDK8新增的時間 LocalDate&#xff1a;代表本地日期(年、月、日、星期) LocalTime&#xff1a;代表本地時間(時、分、秒、納秒) LocalDateTime&#xff1a;代表本地日期、時間(年、月、日、星期、時、分、秒、納秒) 它們獲取對象的方案 2.LocalDate的常用API(…

Android的開機logo生成

生成可用的uboot和kernel的logo圖片 可以通過命令轉換BMP格式的圖片 ### 將 png 轉為顏色深度為8bit的的bmp圖片。jpeg使用jpegtopnm ### pngtopnm logo.png | ppmquant 31 | ppmtobmp -bpp 8 > logo.bmp然后就可以使用新圖替換舊圖片&#xff0c;在kernel目錄下的logo.bmp…

【精選】 VulnHub (超詳細解題過程)

&#x1f36c; 博主介紹&#x1f468;?&#x1f393; 博主介紹&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高興認識大家~ ?主攻領域&#xff1a;【滲透領域】【應急響應】 【python】 【VulnHub靶場復現】【面試分析】 &#x1f389;點贊?評論?收藏…

C# 任務的異常和延續處理

寫在前面 當Task在執行過程中出現異常或被取消等例外的情況時&#xff0c;為了讓執行流程能夠繼續進行&#xff0c;可以使用延續方法實現這種鏈式處理&#xff1b;還可以針對前置任務不同的執行結果&#xff0c;選擇執行不同的延續分支方法。子任務執行過程中的任何異常都會被…

線程安全的哈希表ConcurrentHashMap

1. HashTable 不推薦使用&#xff0c;無腦給各種方法加鎖 2.ConcurrentHashMap 多線程下推薦使用 鎖粒度控制 HashTable直接在方法上加synchronized&#xff0c;相當于對哈希表對象加鎖&#xff0c;一個哈希表只有一把鎖。多線程環境下&#xff0c;無論線程如何操作哈希表…

深入理解Dubbo-3.高級功能剖析和原理解析

&#x1f44f;作者簡介&#xff1a;大家好&#xff0c;我是愛吃芝士的土豆倪&#xff0c;24屆校招生Java選手&#xff0c;很高興認識大家&#x1f4d5;系列專欄&#xff1a;Spring源碼、JUC源碼、Kafka原理、分布式技術原理&#x1f525;如果感覺博主的文章還不錯的話&#xff…

利用貝葉斯超參數優化,提升模型效果更科學(附Python代碼)

超參數優化在大多數機器學習流水線中已成為必不可少的一步&#xff0c;而貝葉斯優化則是最為廣為人知的一種“學習”超參數優化方法。 超參數優化的任務旨在幫助選擇學習算法中成本&#xff08;或目標&#xff09;函數的一組最佳參數。這些參數可以是數據驅動的&#xff08;例…

【UE5】初識MetaHuman 創建虛擬角色

步驟 在UE5工程中啟用“Quixel Bridge”插件 打開“Quixel Bridge” 點擊“MetaHumans-》MetaHuman Presets UE5” 點擊“START MHC” 在彈出的網頁中選擇一個虛幻引擎版本&#xff0c;然后點擊“啟動 MetaHuman Creator” 等待一段時間后&#xff0c;在如下頁面點擊選擇一個人…

Apipost版IDEA插件:Apipost-Helper

Apipost-Helper是由Apipost推出的IDEA插件&#xff0c;寫完接口可以進行快速調試&#xff0c;且支持搜索接口、根據method跳轉接口&#xff0c;還支持生成標準的API文檔&#xff0c;注意&#xff1a;這些操作都可以在代碼編輯器內獨立完成&#xff0c;非常好用&#xff01;這里…