算法面试题:放苹果

关注下方公众号,分享硬核知识

作者 | 小K

出品 | 公众号:小K算法 (ID:xiaok365)

01

故事起源

把M个苹果放在N个盘子里,允许有的盘子空着不放,那么总共有多少种不同的分法呢?
注:5,1,1和1,5,1是同一种分法,且1<=M,N<=10。

02

分析

2.1

苹果和盘子数量关系

苹果和盘子的数量没有说明大小关系,那就意味着有3种情况:  

  • 苹果比盘子多

  • 苹果比盘子少

  • 苹果和盘子数量相同

如果苹果多,那么一定会有盘子放超过一个苹果。如果盘子多,那么一定会有空盘子。如果相等,情况就不一定。

2.2

判断分法是否相同

所有的苹果是相同的,所有的盘子也是相同的,所以他们本身是无序的。
其实这个问题就是把M个苹果分成不超过N堆,总共有多少种分法。所以可先按每堆苹果数量排序,依次比较每一堆的苹果,如果所有堆都一样才是相同的分法。这也就意味着堆数肯定相同,然后排序后每一堆也相同,这样才算是相同的分法。

2.3

怎样才是不同分法

上面有了相同分法的判断,那取反后

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值