Python實現(xiàn)的生成格雷碼功能示例
本文實例講述了Python實現(xiàn)的生成格雷碼功能。分享給大家供大家參考,具體如下:
問題
在一組數(shù)的編碼中,若任意兩個相鄰的代碼只有一位二進制數(shù)不同, 則稱這種編碼為格雷碼(Gray Code),請編寫一個函數(shù),使用遞歸的方法生成N位的格雷碼。
解決方法:
給定一個整數(shù)n,請返回n位的格雷碼,順序為從0開始。
測試樣例:
返回:["0","1"]
題目很刁鉆,題干很簡潔,樣例很高冷……
其中有一些微妙的關系
發(fā)現(xiàn)了這個規(guī)律之后,代碼自然就很好寫了
# -*- 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 "腳本之家測試結(jié)果:" print gary.getGray(3)
運行結(jié)果:
更多關于Python相關內(nèi)容可查看本站專題:《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
Python+Socket實現(xiàn)基于UDP協(xié)議的局域網(wǎng)廣播功能示例
這篇文章主要介紹了Python+Socket實現(xiàn)基于UDP協(xié)議的局域網(wǎng)廣播功能,結(jié)合實例形式分析了Python+socket實現(xiàn)UDP協(xié)議廣播的客戶端與服務器端功能相關操作技巧,需要的朋友可以參考下2017-08-08pyqt 實現(xiàn)QlineEdit 輸入密碼顯示成圓點的方法
今天小編就為大家分享一篇pyqt 實現(xiàn)QlineEdit 輸入密碼顯示成圓點的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06手動實現(xiàn)把python項目發(fā)布為exe可執(zhí)行程序過程分享
這篇文章主要介紹了手動實現(xiàn)把python項目發(fā)布為exe可執(zhí)行程序過程分享,本文使用C語言實現(xiàn)了一個簡潔的Python打包程序,需要的朋友可以參考下2014-10-10python中的__init__ 、__new__、__call__小結(jié)
這篇文章主要介紹了python中的__init__ 、__new__、__call__小結(jié),需要的朋友可以參考下2014-04-04Python使用socket實現(xiàn)組播與發(fā)送二進制數(shù)據(jù)
在工作中經(jīng)常會用到socket傳輸數(shù)據(jù),例如客戶端給服務器發(fā)送數(shù)據(jù)(雙方約定了數(shù)據(jù)格式),本文主要介紹了Python使用socket實現(xiàn)組播與發(fā)送二進制數(shù)據(jù),感興趣的可以了解一下2021-06-06