日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

格雷码问题:输出当输入为n时的格雷码

發布時間:2024/1/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 格雷码问题:输出当输入为n时的格雷码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、寫出n=5時的格雷碼,要求寫出求解過程中變量的變化過程以及求解結果
當n=5時,格雷碼為:
00000 00001 00011 00010 00110 00111 00101 00100 01100 01101 01111 01110 01010 01011 01001 01000 11000 11001 11011 11010 11110 11111 11101 11100 10100 10101 10111 10110 10010 10011 10001 10000
當n=5時,需要遞歸調用n=4時的格雷碼,同理,當n=4時需調用n=3時的格雷碼,并以此類推,當要求n=5時的格雷碼,則需遞歸調用出n小于5時的格雷碼,如下圖所示:

2、寫出算法分析過程,試編寫程序求輸入n時對應的格雷碼,并分析算法的時間復雜度

package grayCode; import java.util.Arrays; import java.util.Scanner; public class GrayCode {public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in); System.out.println("請輸入n:");int n = in.nextInt(); in.close();String[] codes = new String[(int) Math.pow(2, n)];codes = GrayCodeMethod(n);System.out.println("n="+n+"時的格雷碼為: "+Arrays.toString(codes));}public static String[] GrayCodeMethod(int n) {//2的n次方的數組長度String[] graycode = new String[(int) Math.pow(2, n)];if(n == 1) {graycode[0] = "0";graycode[1] = "1";return graycode;}String[] last = GrayCodeMethod(n-1); //遞歸調用之前的格雷碼System.out.println("n="+(n-1)+"時的格雷碼:"+Arrays.toString(last));for(int i = 0; i < last.length; i++) { //循環添加0和1graycode[i] = "0" + last[i];//注意對稱graycode[graycode.length - 1 - i] = "1" + last[i]; }return graycode;} }


如有錯誤還請指正。

總結

以上是生活随笔為你收集整理的格雷码问题:输出当输入为n时的格雷码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。