目录

题目描述

输入/输出描述

题目分析

代码展示

传送门


题目描述

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 0elif apple == 0 or basket == 1:return 1elif 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

Python实现分苹果(递归)相关推荐

  1. 【python】分苹果

    问题:一堆苹果,5个人.第一个人将苹果丢掉一个,然后平均分成5份后拿走其中的一份:第二个人将剩余的苹果丢掉一个,然后再平均分成5份后拿走其中的一份,依次类推...第五个人在第四个人拿走剩下的那部分苹果 ...

  2. python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)

    1. 问题描述: 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1..N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果. 最后老师想知道每个小朋 ...

  3. java递归分苹果_递归应用示例(放苹果)[较难 选听]

    ok,下面我们再看一个例子. 这个例子呢比较有意思. 这个例子名字叫放苹果.这是open jar 的上面比较经典的一道题目. 我们来看一下这个题目.说啊,有M个同样的苹果. 这M个苹果呢一模一样没有区 ...

  4. python【蓝桥杯vip练习题库】ADV-183分苹果(差分数组 离线区间)

    试题 算法提高 分苹果 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1-N.有M个老师,每次第i个老师会给第Li个到第Ri个 ...

  5. 小学奥数 7826 分苹果 python

    http://noi.openjudge.cn/math/7826/ """ 小学奥数 7826 分苹果 http://noi.openjudge.cn/math/782 ...

  6. 史上最全的整数分解方法(包含经典的分苹果问题)

    [华为OD机试真题 2022&2023]真题目录 @点这里@ [华为OD机试真题]信号发射和接收 &试读& @点这里@ [华为OD机试真题]租车骑绿道 &试读& ...

  7. [华为机试真题]70.分苹果

    题目 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放.1<=M<=10,1<=N<=10例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 ...

  8. Python|装饰器|执行时间|递归|动态属性|静态方法和类|继承和多态|isinstance类型判断|溢出|“魔法”方法|语言基础50课:学习记录(6)-函数的高级应用、面向对象编程、进阶及应用

    文章目录 系列目录 原项目地址: 第16课:函数的高级应用 装饰器(记录执行时间的例子) 递归调用 简单的总结 第17课:面向对象编程入门 类和对象 定义类 创建和使用对象 初始化方法 打印对象 面向 ...

  9. PTA—输出全排列 (20分) 递归回溯思想

    PTA-输出全排列 (20分) 递归回溯思想 题目要求: 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出 ...

最新文章

  1. 公众号留言-2020-4-1
  2. python爬虫流程-Python爬虫程序架构和运行流程原理解析
  3. 【算法基础】常用的数据结构与算法
  4. 观察者模式在源码中的应用
  5. java perm 查看_高级 Java 必须掌握:JVM 分析工具和查看命令,超详细
  6. linux通过不同端口访问,linux下两个tomcat通过不同端口访问不同项目
  7. 推荐系统--矩阵分解(5)
  8. LeetCode141-环形链表(Linked List Cycle)-Rust语言实现
  9. Java编程的逻辑 (56) - 文件概述
  10. JavaScript计算指定日期与当前日期的相差天数
  11. 2038: [2009国家集训队]小Z的袜子(hose) - BZOJ
  12. angularjs1.x版本,父子组件之间的双向绑定
  13. 英特尔再现安全漏洞:2011年后计算机几乎全中枪,可窃取你的密码及数据
  14. code blocks代码性能分析_介绍几款Python性能优化工具
  15. python微信语音转发方法_微信语音转发最方便的方法,我现在才知道
  16. windows开机启动方法
  17. 概率论基础-严士健 第二版 习题与补充3.2答案
  18. 如视技术副总裁杨永林:当传统产业遇到“数字空间”
  19. cogs2398 切糕 最小割
  20. 融资1个亿,5000万给魔窗,凭啥?

热门文章

  1. excel自动生成代码_1
  2. 下一代机器人系统的开发方向
  3. PYTHON代码审查工具
  4. Webpack5学习笔记(基础篇五)—— mode之Development环境相关参数配置
  5. python----实战训练100例
  6. 鸿蒙和ios流畅对比,鸿蒙OS 2.0对比iOS 14:苹果流畅度完败
  7. RK3399 Android7.1进入烧录模式的几种方法
  8. abp angular 和mvc_ABP+Angular框架搭建踩坑记
  9. node.js面试题总结
  10. 使用Clang作为库 —— Clang AST