分苹果Python_c++递归

分苹果Python_c++递归题目《分苹果》的Python解决方案。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

题目描述

输入/输出描述

题目分析

代码展示

传送门


 

题目描述

M个同样的苹果分在N个同样的篮子里,允许有篮子空着不放,求一共有多少种不同的分法。

说明,3,1,1和1,3,1是一种分法;篮子可以放入的苹果数量没有最大限制。

 

输入/输出描述

输入:两个整数M和N,例如 7 3

输出:一个整数K,表示一共有K种分苹果的方法。

 

题目分析

先假设篮子数量和苹果数足够多,输入合法。当苹果的数量少于篮子数,至少有basket – apple个篮子是空的,也就是说这部分篮子是多余的,去掉它们对结果没有任何影响。

 

当苹果数量大于篮子的时候,由于没有制定每个篮子放置苹果的上限,因此每个篮子可以放无数多个苹果,也可以空置。因此在这种情况下,分苹果的分法是两种子情况的总和,即保证所有篮子里放着苹果和允许有篮子空着。

进一步分析允许所有篮子都有苹果:

因为所有篮子都有苹果,将每个篮子中拿掉一个苹果,对计算结果没有影响,且可以将问题的规模简化。因此在这种情况下,apple和basket的分法等于apple – basket和basket。

允许有篮子空置:

这种情况可以理解为,至少有一个篮子空着,至少有两个篮子空着…直到只有一个篮子能装苹果。将这些所有的可能加起来,就是这个子情况的分法总数量。

 

接下来讨论临界情况,当没有苹果,或者只剩下一个篮子的时候,这时候只有一种方法(递归出口)。

异常情况:苹果和篮子数量小于0,没有这种情况的分法。

 

代码展示

def share(apple, basket):
    if apple < 0 or basket <= 0:
        return 0
    elif apple == 0 or basket == 1:
        return 1
    elif apple < basket:
        return share(apple, apple)
    else:
        return share(apple, basket - 1) + share(apple - basket, basket)

echo = list(map(int, input().split()))
apple = echo[0]
basket = echo[1]
print(share(apple, basket))

传送门

1. input()函数

https://blog.csdn.net/TCatTime/article/details/82556033

2. split()函数

https://blog.csdn.net/TCatTime/article/details/82053259

3. int()函数

https://blog.csdn.net/TCatTime/article/details/82826824

4. map()函数

https://blog.csdn.net/TCatTime/article/details/82942412

5. list()函数

https://blog.csdn.net/TCatTime/article/details/82947385

6. print()函数

https://blog.csdn.net/TCatTime/article/details/83450692

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182752.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sqlpro studio 2021激活码[最新免费获取]

    (sqlpro studio 2021激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWN…

    2022年3月27日
    251
  • STM32—PID控制在直流电机中的应用「建议收藏」

    STM32—PID控制在直流电机中的应用「建议收藏」文章目录一.PID控制算法1.什么是PID2.PID系数的理解Ⅰ.比例(P)部分Ⅱ.积分(I)部分Ⅲ.微分(D)部分3.PID的数字化处理二.位置闭环控制三.速度闭环控制一.PID控制算法1.什么是PIDPID:Proportion-Integral-Differential在过程控制中,我们经常使用的一种算法就是PID算法了,所谓PID控制算法就是对偏差进行比例、积分、微分控制,来使偏差…

    2022年6月5日
    129
  • 【模式识别】多层感知器 MLP[通俗易懂]

    【模式识别】多层感知器 MLP[通俗易懂]由前面介绍看到,单个感知器能够完成线性可分数据的分类问题,是一种最简单的可以“学习”的机器。但他无法解决非线性问题。比如下图中的XOR问题:即(1,1)(-1,-1)属于同一类,而(1,-1)(-1,1)属于第二类的问题,不能由单个感知器正确分类。即在Minsky和Papert的专著《感知器》所分析的:感知器只能解决所谓一阶谓词逻辑问题:与(AND),或(OR)等,而不能解决异或(XOR)…

    2022年6月18日
    30
  • python的py文件打包成exe_python生成文件

    python的py文件打包成exe_python生成文件基本命令:cxfreezexxx.py(打包文件)–target-dirf:\dist\(打包后exe路径) 额外命令:–base-name=win32gui  消除启动exe文件出现的dos窗口 –icon=d:\xxxx.ico  添加exe文件的图标,注意,图标必须是ico格式…

    2022年10月8日
    2
  • robotium例子

    robotium例子android基础知识12:android自动化测试04—Robotium:实例(上):http://daimajishu.iteye.com/blog/1556631robotium方法学习实例:http://blog.csdn.net/gzh0222/article/details/7335666Android自动化测试—Robotium:实例(上):http:/

    2022年7月25日
    9
  • 单片机—HLK-W801并口驱动ST7789

    介绍了w801上并口驱动sT7789的开发

    2022年4月13日
    238

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号