题解 | #放苹果#

放苹果

https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf

思路——将问题简化为有空盘子和没空盘子的情况,m个苹果,n个盘子

  1. 有空盘子:f(m, n)=f(m, n - 1)
  2. 没有空盘子:就是每个盘子先放一个苹果,然后将剩下的m-n个苹果放在n个盘子上会有几种方法: f(m, n) = f(m - n, n), (m > n)

如果苹果数m < 盘子数n,那就是将m个苹果放到m个盘子上会有几种方法: f(m, m)

递归结束条件:当只有1个苹果或者0个苹果或者1个盘子的时候,只有1种方法: f(m, n) = 1, (m = 0, m = 1, n = 1);

综上所述,

  • 当m > n时:f(m, n) = f(m, n - 1) + f(m - n, n)
  • 当m <= n时:f(m, n) = f(m, m)
  • 当m = 0 或 m=1 或 n=1时,f(m, n) = 1;

以下是本次算法的代码, 有不足请指正

function putApple(m, n) {
    if (m === 0 || m === 1 || n === 1) return 1;
    if (m < n) return putApple(m, m);
    else return putApple(m, n - 1) + putApple(m - n, n);
}
#学习笔记#
全部评论

相关推荐

小鸡蛋吃布丁:上岸编制,考个偏远的四五线小县城的话那确实难度不高,工资三四千的,但是考发达地区的纯看实力和运气了
点赞 评论 收藏
分享
我的人生算是废了,23届裸辞空档一年,存款只能坚持几个月了,找不到像样的工作了,人生何去何从。
梦想是成为七海千秋:这大环境下为什么要裸辞呀,风险真的挺大的,而且社招的话23届没有太多的竞争力,不过既然已经裸辞了就不要焦虑慢慢找。
点赞 评论 收藏
分享
05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务