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时的格雷码相关推荐

  1. Java:使用Robot类模拟键盘, 以Alt码方式输出汉字

    Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 文章目录 Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 java.awt.Robot类 使用Alt码输出汉字 尝试 `Al ...

  2. python摄像头识别二维码_python使用pyzbar+opencv实现实时识别二维码--李渣渣(lizaza.cn)...

    写东西就要写全面,前两天写了如何用python生成二维码,今天博主就给大家介绍一个识别二维码的方法. 1.安装本次开发所需要的库opencv 和pyzbar pip install pyzbar pi ...

  3. 用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积;及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积。(附带源码)

    用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积:及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积.(附带源码) 纯分享一下平时练习题: 运算结果如下 源代码如下: import ...

  4. 【flink】Flink 1.12.2 源码浅析 : Task数据输入

    1.概述 转载:Flink 1.12.2 源码浅析 : Task数据输入 在 Task 中,InputGate 是对输入的封装,InputGate 是和 JobGraph 中 JobEdge 一一对应 ...

  5. C语言switch输入月份输出季节,输入年月,输出月份有几天(分别用了if——else和switch)...

    首先是switch做的 class Program { static void Main(string[] args) {/* 题目要求:请用户输入年份,输入月份,输出该月的天数. 思路:一年中月份的 ...

  6. python--循环输出26个字母对应的ASCII的码值、模拟用户登录 、猜数游戏(二分法)、计算100-999之间的水仙花数

    循环输出26个字母对应的ASCII的码值--循环执行 a-97 b-98依次+1 x=97 #a的ASCII值 for _ in range(26):#只需要执行次数,不需要使用迭代变量print(c ...

  7. ffmpeg转码多路输出(二)

    ffmpeg转码多路输出(二) 本程序支持一路输入多路输出,可根据map配置自行添加,第1路为纯拷贝,其他2路经过编解码,格式转换缩放和重采样,纯拷贝方面不同格式适应方面还没做全,以后补充.本程序适合 ...

  8. ACMNO.21 C语言-逆序输出 输入10个数字,然后逆序输出。 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0

    题目描述 输入10个数字,然后逆序输出. 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1 提示 数组?堆栈 ...

  9. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字

    题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二 ...

最新文章

  1. FPGA之道(68)原语的使用
  2. EWORD 0511
  3. 查看源代码不方便?我有利器
  4. 【深度学习】Focal Loss 与 GHM——解决样本不平衡问题
  5. 怎么样用idea上传git?-通俗易懂
  6. 【模型解读】resnet中的残差连接,你确定真的看懂了?
  7. mybatis3.2.3+spring整合
  8. linux带字符的行,linux小计,统计文件中包含指定字符串的行数
  9. hbase java api最新版本_HBase基本命令与新版本Java API
  10. c语言宏函数怎么传递宏参数_C语言中的宏参数评估
  11. SQL记录-PLSQL数组
  12. oracle比较强大的函数,SQL和ORACLE函数比较
  13. python编程语言继承_Python 面向对象编程——继承和多态
  14. 如何在win10系统上安装linux子系统
  15. Window+Java环境证书生成说明,pfx证书已经生成
  16. Javascript特效:图片切换(类似于电商网站图片查看)的封装实现和闭包实现
  17. hive udf 分组取top1_Hive中UDF练习
  18. 数字电子技术基础(五):编码器
  19. 几款免费好用的OCR工具
  20. C++程序解线性一次方程组

热门文章

  1. mysql分区、分表学习
  2. ByteBuf主要继承关系图
  3. Codeup-问题 A: 最大连续子序列
  4. BSP细分时代即将来临
  5. 算法竞赛入门经典(第二版) | 例题4-2 刽子手游戏 (UVa489,Hangman Judge)
  6. 一段CyclicBarrier代码
  7. java转文件编码bom_编码转换:UTF-8 BOM to GBK
  8. python爬虫插件_Python使用Chrome插件实现爬虫过程图解
  9. 幼儿园带括号算式口诀_幼儿园数学作业括号题型.doc
  10. golang 所有进程休眠_golang 垃圾回收(三)插入写屏障