题目描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入
每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。

样例输入
7 3

样例输出
8

解答:
def pour(m,n):
 if n==1 or m==0:
  return 1
 elif m<n:
  return pour(m,m)
 else:
  return pour(m,n-1)+pour(m-n,n)

if __name__=="__main__":
  while True:
  try:
   m,n=map(int,input().strip().split(" "))
   res=pour(m,n)
   print(res)
  except:
   break
 
总结:

  1. 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。所以有第二个判定语句pour(m,m)
  2. 当n<=m:不同的放法可以分成两类:
    (1)有至少一个盘子空着,即相当于pour(m,n-1);
    (2)所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,pour(m-n,n).
    (3)而总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)
  3. 递归出口条件说明:
    (1)当n=1时,所有苹果都必须放在一个盘子里,所以返回1;
    (2)当没有苹果可放时,定义为1种放法;
    (3)递归的两条路,第一条n会逐渐减少,终会到达出口n1;
    (4)第二条m会逐渐减少,因为n>m时,我们会return pour(m,m) 所以终会到达出口m0.

牛客刷题:放苹果(编程题)相关推荐

  1. 数据结构牛客网考试两道编程题

    我的目录: 环形链表的约瑟夫问题(进阶) 计算二叉树左叶子之和 环形链表的约瑟夫问题(进阶) 描述: 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 J ...

  2. 【牛客刷题专栏】0x27:JZ29 顺时针打印矩阵(C语言编程题)

    前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失. 个人刷题练习系列专栏:个人CSDN牛客刷题专栏. 题目来自:牛客/题库 / 在线编程 / 剑 ...

  3. 牛客刷题-Java面试题库【动态更新添加题目】(2023.06.19更新)

    讲在前面 ✨ 牛客刷题日记–理解为重中之重 刷题一方面是持续的了解到自己哪方面比较欠缺,另一方面也是从各大厂的面试题可以看出当前所需的技术栈的偏重点,持续的巩固基础和查漏补缺,一如代码深似海–学无止境 ...

  4. 牛客网剑指offer编程实践1-10题

    牛客网剑指offer编程实践1-10题 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  5. 牛客刷题日记(2021-12-8)

    牛客刷题日记(2021-12-8) 题目: 以下哪个接口的定义是正确的?( )interface B { void print() { } ;}interface B { static void pr ...

  6. 【字节面试题】牛客刷题偶遇字节后端笔试面经 撸它

    想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送,微信随时解答你的疑问 牛客刷题偶遇 字节后端笔试0715 撸它 一共两道编程题. 1. 给 ...

  7. 《牛客刷verilog》Part III Verilog企业真题

    前言 之前刷过HDLbits上面的题目,点击链接可以查看详细笔记:verilog练习:hdlbits网站系列完结! 最近又想刷一下牛客上面的题目,可以点击链接与小编一起刷题:牛客刷题 小编不才,文中如 ...

  8. 【Shell牛客刷题系列】SHELL5 打印空行的行号:一起学习grep命令搭配正则表达式的使用

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Linux>.欢迎关注专栏~ 本 ...

  9. 牛客刷题日记(2021-11-24)

    牛客刷题日记(2021-11-24) 题目: 下面程序的输出是:() String x="fmn"; x.toUpperCase(); String y=x.replace('f' ...

  10. 最长上升子序列(LIS),牛客刷题

    目录: 最长上升子序列(LIS) 1.模板(数据较小) 2.模板(数据较大) 牛客刷题 1. 牛客练习赛107A:如见青山 2.牛客小白月赛65A牛牛去购物 3.牛客小白月赛65B牛牛去购物 4.牛客 ...

最新文章

  1. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等
  2. 正向最大匹配算法 python代码_中文分词算法之最大正向匹配算法(Python版)
  3. 关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案
  4. Optional java 用法_Java8 Optional 的正确使用方式
  5. java web 连接linux_如何将javaweb项目部署到linux下
  6. 【Python基础入门系列】第03天:Python 变量与数据类型
  7. [C++] 哈希计数
  8. 李洪强iOS开发Swift篇—02_变量和常量
  9. 【kafka】Kafka 幂等 Producer
  10. 【Kafka】nable to write to standard out, closing consumer Console consumer process hangs on SIGINT
  11. MySQL(三)表记录的更新操作
  12. python基本语言元素是_Python-基本语法元素
  13. ffmpeg 拼接mp4_ffmpeg 合并 拼接 mp4视频
  14. rsyslogd以及日志轮替logrotate的梳理
  15. 军工电子产品环境可靠性测试试验实验室GJB150A
  16. 用gpg加密软件加密文件
  17. 使用ffmpeg+opencv播放ts格式的视频
  18. 采用HCNR200/201模拟量隔离电路分享
  19. iOS : 通过路径读取文件的几种方法
  20. MySQL的错误1264, 1406, 1329 ,1101 的修改方法

热门文章

  1. Android小图标
  2. OBS Studio显示器捕获黑屏的解决方法
  3. go语言的魔幻旅程28-go命令
  4. 荣耀8x手机换电池实战
  5. PADS-VX入门到精通实战项目讲解(下)—layout部分-覃小刚-专题视频课程
  6. 国开《Android智能手机编程》终结性考核
  7. 函数曲线长度的计算方法
  8. 计算星期几--C语言
  9. bios禁用intel VT-x
  10. scratch少儿编程实例教程(模拟动画片项目式教学)——幻影龙动画编程