LeetCode百錢買百雞python遞歸解法示例
更新時(shí)間:2023年11月20日 10:49:50 作者:voyage200
這篇文章主要為大家介紹了LeetCode百錢買百雞題目python遞歸解法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
plan A
#公雞5文錢一只 母雞3文錢一只 小雞1文錢 三只
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'買{gong}只公雞,{mu}只母雞,{xiao*3}只小雞,剛好湊夠{money}文錢。')
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ù),總錢數(shù),總雞數(shù)),狀態(tài)轉(zhuǎn)移
import numpy as np # 導(dǎo)入numpy庫
st = np.zeros((100, 100, 100)) # 新建三維數(shù)組,且初始值為0,記錄狀態(tài)是否被遍歷過,進(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ù),總錢數(shù),總雞數(shù))
resolve(0, 0, 0, 0, 0)## 運(yùn)行結(jié)果

小結(jié)
#公雞5文錢一只 母雞3文錢一只 小雞1文錢 三只
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'買{gong}只公雞,{mu}只母雞,{xiao*3}只小雞,剛好湊夠{money}文錢。')
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百錢買百雞python遞歸解法示例的詳細(xì)內(nèi)容,更多關(guān)于百錢買百雞python遞歸解法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:
相關(guān)文章
Python爬蟲實(shí)戰(zhàn)JS逆向AES逆向加密爬取
一個(gè)建筑行業(yè)的堂哥為了搞一些商業(yè)數(shù)據(jù)前前后后花了1w,辣條我半個(gè)小時(shí)就能解決的事情,這就是技術(shù)的魅力!聲明:爬取是的公開數(shù)據(jù)2021-10-10
Python中用append()連接后多出一列Unnamed的解決
Python中用append()連接后多出一列Unnamed的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Python requests模塊cookie實(shí)例解析
這篇文章主要介紹了Python requests模塊cookie實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
解決同一目錄下python import報(bào)錯(cuò)問題
這篇文章主要介紹了解決同一目錄下python import報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Python將多個(gè)list合并為1個(gè)list的方法
今天小編就為大家分享一篇Python將多個(gè)list合并為1個(gè)list的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06

