分苹果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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 10种方法缓解所显示器造成的眼睛疲劳

    10种方法缓解所显示器造成的眼睛疲劳

    2021年9月18日
    44
  • static修饰的函数有什么特点(static可以修饰所有的变量吗)

    static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类:如果这个静态函数出现在类里,那么它是一个静态成员函数;        静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。        其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有…

    2022年4月18日
    39
  • discuz二次开发技巧

    discuz二次开发技巧discuz二次开发技巧二次开发大多时候知识设置和处理,如果能够获知模板文件获得的变量数组将大大提高我们的开发效率获取页面已经定义的变量<–{evalprintf_r(get_defined_vars());}–>  获取页面定义的常量<–{evalprint_r(get_defined_constants(true));}–&g…

    2022年5月12日
    42
  • C语言面试题汇总(持续更)「建议收藏」

    C语言面试题汇总(持续更)「建议收藏」笔者最近在找工作,因此对应聘C/C++嵌入式开发工程师容易被问到,或者经常搞不清楚的问题做一个汇总,也希望能对找工作的小伙伴起到帮助参考的作用。本篇集中于C语言方面的面试题目。因为是自己总结的,可能会存在错误,还烦请各位读者批评指正。一、变量内存分配1.一个由C/C++编译的程序占用的内存分为以下几个部分:①栈区——局部变量——向低地址生长——自动释放——其操作方式类似于数据结构中的栈。②堆区——向高地址生长——手动分配、释放的存储区——malloc,fr..

    2022年8月28日
    2
  • 【AVD】简述某些视频在线播放时卡顿、本地播放时不卡顿的问题

    【AVD】简述某些视频在线播放时卡顿、本地播放时不卡顿的问题曾经在业务中遇到过这样的问题,我们编码出来的视频在Android、iOS端,使用ijkplayer内核的播放器播放时卡顿,甚至无法任意定位播放位置,将导致卡顿无法播放。今天,又有同事遇到类似的问题,而我发现,我只写过一个《用notepad++和Excel协助分析媒体文件包》,而并没有把当时遇到的问题分析记录下来。于是,在此简单说明一下。视频文件结构教科书般的教程、课程中对视频文件结构的描述非常详细,此处不赘述,简单地说,视频文件也是一种文件,是文件,就是一堆二进制数的集合,而且是一个.

    2022年9月15日
    2
  • spdlog linux编译出错,【C++】spdlog–log4cxx有点笨重,试一试spdlog

    spdlog linux编译出错,【C++】spdlog–log4cxx有点笨重,试一试spdlogspdlog是什么linuxFastC++logginglibrary按照官方介绍,是一个高性能的C++日志组件,支持跨平台,兼容C++11。原来项目中使用的是log4cxx,我感受稍微有点笨重,而且好久没有更新了。ios在新项目中,我只须要一款轻量级的日志组件,能:git存文件按照天数切分快速的浏览了spdlog,知足个人需求,因而开搞!githubspdlog快速入门如下内容来自spd…

    2022年6月23日
    51

发表回复

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

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