LeetCode百錢(qián)買(mǎi)百雞python遞歸解法示例
plan A
#公雞5文錢(qián)一只 母雞3文錢(qián)一只 小雞1文錢(qián) 三只 money = 100 def buy_kun(gong:int,mu:int,xiao:int,c:int) -> None: if gong*5+mu*3+xiao > money or gong+mu+xiao*3>100: return if gong*5+mu*3+xiao == money and gong+mu+xiao*3==100: print(f'買(mǎi){gong}只公雞,{mu}只母雞,{xiao*3}只小雞,剛好湊夠{money}文錢(qián)。') return if c<1 : buy_kun(gong+1,mu,xiao,0) if c<2: buy_kun(gong,mu+1,xiao,1) if c<3: buy_kun(gong,mu,xiao+1,2) buy_kun(0,0,0,0)
plan B
參考:## 狀態(tài)轉(zhuǎn)移解法(遞歸)
# (公雞數(shù),母雞數(shù),小雞數(shù),總錢(qián)數(shù),總雞數(shù)),狀態(tài)轉(zhuǎn)移 import numpy as np # 導(dǎo)入numpy庫(kù) st = np.zeros((100, 100, 100)) # 新建三維數(shù)組,且初始值為0,記錄狀態(tài)是否被遍歷過(guò),進(jìn)行剪枝操作 def resolve(a, b, c, d, e): if d == 100 and e == 100: print("%s只公雞,%s只母雞,%s只小雞" % (a, b, c)) else: a1 = a + 1 b1 = b + 1 c1 = c + 3 if d + 5 <= 100 and e + 1 <= 100 and st[a1][b][c] == 0: st[a1][b][c] = 1 resolve(a1, b, c, d + 5, e + 1) if d + 3 <= 100 and e + 1 <= 100 and st[a][b1][c] == 0: st[a][b1][c] = 1 resolve(a, b1, c, d + 3, e + 1) if d + 1 <= 100 and e + 3 <= 100 and st[a][b][c1] == 0: st[a][b][c1] = 1 resolve(a, b, c1, d + 1, e + 3) # (公雞數(shù),母雞數(shù),小雞數(shù),總錢(qián)數(shù),總雞數(shù)) resolve(0, 0, 0, 0, 0)
## 運(yùn)行結(jié)果
小結(jié)
#公雞5文錢(qián)一只 母雞3文錢(qián)一只 小雞1文錢(qián) 三只 import numpy as np st = np.zeros((100, 100, 100)) money = 100 def buy_kun(gong:int,mu:int,xiao:int) -> None: if st[gong][mu][xiao] == 1: return else: st[gong][mu][xiao] = 1 if gong*5+mu*3+xiao > money or gong+mu+xiao*3>100: return if gong*5+mu*3+xiao == money and gong+mu+xiao*3==100: print(f'買(mǎi){gong}只公雞,{mu}只母雞,{xiao*3}只小雞,剛好湊夠{money}文錢(qián)。') return buy_kun(gong+1,mu,xiao) buy_kun(gong,mu+1,xiao) buy_kun(gong,mu,xiao+1) buy_kun(0,0,0)
以上就是LeetCode百錢(qián)買(mǎi)百雞python遞歸解法示例的詳細(xì)內(nèi)容,更多關(guān)于百錢(qián)買(mǎi)百雞python遞歸解法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python利用JMeter測(cè)試Tornado的多線程
這篇文章主要介紹了python利用JMeter測(cè)試Tornado的多線程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python實(shí)現(xiàn)程序的單一實(shí)例用法分析
這篇文章主要介紹了Python實(shí)現(xiàn)程序的單一實(shí)例用法,較為詳細(xì)的分析了Python窗口的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06Python通過(guò)兩個(gè)dataframe用for循環(huán)求笛卡爾積
這篇文章主要介紹了Python通過(guò)兩個(gè)dataframe用for循環(huán)求笛卡爾積,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Tensorflow 多線程與多進(jìn)程數(shù)據(jù)加載實(shí)例
今天小編就為大家分享一篇Tensorflow 多線程與多進(jìn)程數(shù)據(jù)加載實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python使用pynput捕獲單個(gè)按鍵的步驟詳解(包括組合鍵和功能鍵)
在數(shù)字時(shí)代,鍵盤(pán)是與計(jì)算機(jī)交流的主要工具,鍵盤(pán)的每一次敲擊都承載著信息,而在某些場(chǎng)景下,可能需要記錄這些信息,這時(shí)候,pynput庫(kù)就派上了大用場(chǎng),它可以輕松地幫捕獲并記錄鍵盤(pán)上的每一個(gè)操作,所以本文給大家介紹了python使用pynput捕獲鍵的操作步驟2024-05-05詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè)
這篇文章主要介紹了詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Django框架模板語(yǔ)言實(shí)例小結(jié)【變量,標(biāo)簽,過(guò)濾器,繼承,html轉(zhuǎn)義】
這篇文章主要介紹了Django框架模板語(yǔ)言,結(jié)合實(shí)例形式總結(jié)分析了Django框架中變量,標(biāo)簽,過(guò)濾器,繼承,html轉(zhuǎn)義等相關(guān)模板語(yǔ)言操作技巧,需要的朋友可以參考下2019-05-05