LeetCode百钱买百鸡python递归解法示例

 更新时间:2023年11月20日 10:49:50   作者:voyage200  
这篇文章主要为大家介绍了LeetCode百钱买百鸡题目python递归解法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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

参考:## 状态转移解法(递归)

# (公鸡数,母鸡数,小鸡数,总钱数,总鸡数),状态转移
import numpy as np  # 导入numpy库
st = np.zeros((100, 100, 100))  # 新建三维数组,且初始值为0,记录状态是否被遍历过,进行剪枝操作
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)
# (公鸡数,母鸡数,小鸡数,总钱数,总鸡数)
resolve(0, 0, 0, 0, 0)

## 运行结果

小结

#公鸡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递归解法示例的详细内容,更多关于百钱买百鸡python递归解法的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

相关文章

  • Python爬虫实战JS逆向AES逆向加密爬取

    Python爬虫实战JS逆向AES逆向加密爬取

    一个建筑行业的堂哥为了搞一些商业数据前前后后花了1w,辣条我半个小时就能解决的事情,这就是技术的魅力!声明:爬取是的公开数据
    2021-10-10
  • python微信跳一跳游戏辅助代码解析

    python微信跳一跳游戏辅助代码解析

    本篇文章给大家详细讲解了用python写的一个微信跳一跳辅助脚本的源码,对此有兴趣的朋友参考下吧。
    2018-01-01
  • Python中用append()连接后多出一列Unnamed的解决

    Python中用append()连接后多出一列Unnamed的解决

    Python中用append()连接后多出一列Unnamed的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python requests模块cookie实例解析

    Python requests模块cookie实例解析

    这篇文章主要介绍了Python requests模块cookie实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 解决同一目录下python import报错问题

    解决同一目录下python import报错问题

    这篇文章主要介绍了解决同一目录下python import报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Python面向对象编程repr方法示例详解

    Python面向对象编程repr方法示例详解

    这篇文章主要介绍了Python面向对象编程repr方法的示例详解,文中附含详细的代码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Python基于回溯法子集树模板解决m着色问题示例

    Python基于回溯法子集树模板解决m着色问题示例

    这篇文章主要介绍了Python基于回溯法子集树模板解决m着色问题,简单描述了m着色问题并结合实例形式分析了Python使用回溯法子集树模板解决m着色问题的具体步骤与相关操作注意事项,需要的朋友可以参考下
    2017-09-09
  • python OpenCV图像直方图处理

    python OpenCV图像直方图处理

    这篇文章主要介绍了python OpenCV图像直方图处理,文章通过matplotlib画一个直方图展开详情,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python中线程编程之threading模块的使用详解

    Python中线程编程之threading模块的使用详解

    这篇文章主要介绍了Python中线程编程之threading模块的使用详解,由于GIL的存在,线程一直是Python编程中的焦点问题,需要的朋友可以参考下
    2015-06-06
  • Python将多个list合并为1个list的方法

    Python将多个list合并为1个list的方法

    今天小编就为大家分享一篇Python将多个list合并为1个list的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论