Python实现的生成格雷码功能示例


Posted in Python onJanuary 24, 2018

本文实例讲述了Python实现的生成格雷码功能。分享给大家供大家参考,具体如下:

问题

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

解决方法:

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:

返回:["0","1"]

题目很刁钻,题干很简洁,样例很高冷……

Python实现的生成格雷码功能示例

其中有一些微妙的关系

Python实现的生成格雷码功能示例

发现了这个规律之后,代码自然就很好写了

# -*- coding:utf-8 -*-
class GrayCode:
  def getGray(self, n):
    # write code here
    global maxn
    maxn = n
    return GrayCode.getGrace(self, ['0', '1'], 1)
  def getGrace(self, list_grace, n):
    global maxn
    if n >= maxn:
      return list_grace
    list_befor, list_after = [], []
    for i in xrange(len(list_grace)):
      list_befor.append('0' + list_grace[i])
      list_after.append('1' + list_grace[-(i + 1)])
    return GrayCode.getGrace(self, list_befor + list_after, n + 1)
gary = GrayCode()
print "三水点靠木测试结果:"
print gary.getGray(3)

运行结果:

Python实现的生成格雷码功能示例

更多关于Python相关内容可查看本站专题:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python根据区号生成手机号码的方法
Jul 08 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python实现截屏的函数
Jul 26 Python
Python爬虫文件下载图文教程
Dec 23 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
PyQt Qt Designer工具的布局管理详解
Aug 07 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
wxPython实现绘图小例子
Nov 19 Python
Python变量作用域LEGB用法解析
Feb 04 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
python实现自动打卡的示例代码
Oct 10 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
Python3.6安装及引入Requests库的实现方法
Jan 24 #Python
pycharm+django创建一个搜索网页实例代码
Jan 24 #Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 #Python
Sublime开发python程序的示例代码
Jan 24 #Python
You might like
PHP页面间传递参数实例代码
2008/06/05 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
Vue.js实现简单动态数据处理
2017/02/13 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python制作mysql数据迁移脚本
2019/01/01 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
旅游项目开发策划书
2014/01/18 职场文书
大学生活动策划方案
2014/02/10 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
汽车专业求职信
2014/06/05 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
大学生实训报告总结
2014/11/05 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
彻底理解golang中什么是nil
2021/04/29 Golang
python pygame入门教程
2021/06/01 Python
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
MySQL实现配置主从复制项目实践
2022/03/31 MySQL