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 10 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
python中logging库的使用总结
Oct 18 Python
浅谈python 里面的单下划线与双下划线的区别
Dec 01 Python
matplotlib绘制动画代码示例
Jan 02 Python
利用Python检测URL状态
Jul 31 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
Django之PopUp的具体实现方法
Aug 31 Python
解决python 找不到module的问题
Feb 12 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
详解Python中的Lock和Rlock
Jan 26 Python
python 经纬度求两点距离、三点面积操作
Jun 03 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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
PHP图片水印类的封装
2017/07/06 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
详解Python的Django框架中的中间件
2015/07/24 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
使用npy转image图像并保存的实例
2020/07/01 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
大二自我鉴定范文
2013/10/05 职场文书
就业自我评价
2014/02/04 职场文书
给朋友的道歉短信
2015/05/12 职场文书
安全教育培训制度
2015/08/06 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
用python自动生成日历
2021/04/24 Python
golang在GRPC中设置client的超时时间
2021/04/27 Golang