Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚問(wèn)題
本文實(shí)例講述了Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚問(wèn)題。分享給大家供大家參考,具體如下:
按照《啊哈》里的思路實(shí)現(xiàn)這道題目,但是和結(jié)果不一樣,我自己用一幅牌試了一下,發(fā)現(xiàn)是我的結(jié)果像一點(diǎn),可能我理解的有偏差。
# 小貓釣魚 # 計(jì)算桌上每種牌的數(shù)量 # 使用defaultdict類,并設(shè)置默認(rèn)類型為int型,即默認(rèn)值為0 # cardcounts = defaultdict(int) # 不過(guò)deque有對(duì)應(yīng)的方法 def henhenhaahaa(): from collections import deque hen = deque() # hen的手牌 haa = deque() # haa的手牌 table = deque() # 桌上的牌 # 手扎初始化 for card in [2,4,1,2,5,6]: hen.append(card) for card in [3,1,3,5,6,4]: haa.append(card) # 當(dāng)兩個(gè)人的手牌都不為零食,游戲繼續(xù) # 如果某人打出的牌與桌上的某張牌相同 # 即可將兩張牌以及中間的所有牌以此取走 # 由于桌上同樣的牌不可能超過(guò)兩張 # 只要計(jì)算目標(biāo)牌的數(shù)量,以此取回即可 # 刷新桌上的牌(打出牌,取牌) def refreshtable(person, card): table.append(card) if table.count(card)>=2: while table.count(card)>0: person.append(table.pop()) while len(hen)!=0 and len(haa)!=0: # print "tab:",list(table) i = hen.popleft() # hen先出牌 # print "hen put",i refreshtable(hen, i) # hen動(dòng)作 # print "hen:",list(hen) # print "tab:",list(table) j = haa.popleft() # haa后出牌 # print "haa put",j refreshtable(haa, j) # haa動(dòng)作 # print "haa:",list(haa) # print "tab:",list(table) # print "next turn" if len(hen)!=0: print "hen win" print "hen:",list(hen) else: print "haa win" print "haa:",list(haa) print "ontables" print "tab:",list(table) if __name__=="__main__": print "腳本之家測(cè)試結(jié)果:" henhenhaahaa() # 我自己手動(dòng)用牌模擬的結(jié)果根本就和書上不一樣 # 我覺(jué)得我自己的答案沒(méi)啥問(wèn)題 # 單步模擬的結(jié)果也是一樣的
運(yùn)行結(jié)果:
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python Pandas時(shí)序數(shù)據(jù)處理
這篇文章主要介紹了python Pandas時(shí)序數(shù)據(jù)處理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06PyCharm配置KBEngine快速處理代碼提示沖突、配置命令問(wèn)題
這篇文章主要介紹了PyCharm配置KBEngine,解決代碼提示沖突、配置命令,本文通過(guò)圖文并茂的形式給大家介紹的超詳細(xì),需要的朋友可以參考下2021-04-04Python超詳細(xì)講解內(nèi)存管理機(jī)制
本章主要介紹Pyhon的內(nèi)存管理,以Pyhon的計(jì)數(shù)機(jī)制作為引入,介紹Pyhon的內(nèi)存管理方式,感興趣的朋友來(lái)看看吧2022-06-06python使用PyV8執(zhí)行javascript代碼示例分享
這篇文章主要介紹了python使用PyV8執(zhí)行javascript的小示例,大家參考使用吧2013-12-12paramiko使用tail實(shí)時(shí)獲取服務(wù)器的日志輸出詳解
這篇文章主要給大家介紹了關(guān)于paramiko使用tail實(shí)時(shí)獲取服務(wù)器的日志輸出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Python?socket如何解析HTTP請(qǐng)求內(nèi)容
這篇文章主要介紹了Python?socket如何解析HTTP請(qǐng)求內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02