M个苹果放在N个盘子里,有多少种不同的放法

problem

这个题目前我再LeetCode 没找到相同或是相似的题目,有同学知道的话,可以留言一下

M个苹果放在N个盘子里,有多少种不同的放法?

solution

这个题是我在面试的时候,面试官出的一个题目,当时用的回溯,但是思路不对,面试官还提醒分情况和动态规划,可是着实没有做出来,面试之后就去百度了解答练习了一次。

方法一

思路过程

  • 提前是苹果数M>=0,盘子数N>=0

  • 对每次分发,都可以如下考虑:

    • 如果苹果数小于盘子数(M<=N),一定会存在空盘,那么其实只能在M个盘子中分——f(M,N)=f(M,M)
    • 如果苹果数大于等于盘子数(M>=N)(等于的情况必须划分到这里,因为如果在上面一种情况下,会被无限循环)
      • 假设每个盘子都有一个苹果,剩下M-N个苹果在N个盘子中分配——f(M,N)=f(M-N,N)
      • 假设至少空一个盘子——f(M,N)=f(M,N-1) // 这里思考了一下为什么是N-1,e而没有N-2,因为N-1的情况中包含N-2的情况,N-1个盘中也可以在空一个出来的情况
  • 终止条件:

    • 盘子数N==1,只能放到这个盘子里,返回一
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值