题目

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

思路

设f(m,n) 为m个苹果,n个盘子的放法数目:

  1. 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即if(n>m) f(m,n) = f(m,m)  
  2. 当n<=m:不同的放法可以分成两类:
    (1)有至少一个盘子空着,即相当于f(m,n) = f(m,n-1);
    (2)所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即f(m,n) = f(m-n,n).而总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)

递归出口条件说明:

当n=1时,所有苹果都必须放在一个盘子里,所以返回1;
当没有苹果可放时,定义为1种放法;
递归的两条路,第一条n会逐渐减少,终会到达出口n==1;
第二条m会逐渐减少,因为n>m时,我们会return f(m,m) 所以终会到达出口m==0.

代码

/*---------------------------------------
*   日期:2015-07-07
*   作者:SJF0115
*   题目:分苹果
*   来源:华为机试真题
-----------------------------------------*/
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;// apple 个 苹果 basket 个 篮子
int ShareApple(int apple,int basket){// 因为我们总是让apple >= basket来求解的,所以apple - basket >= 0,// 让apple = 0时候结束,如果改为apple = 1,可能得不到正确解if(apple == 0 || basket == 1){return 1;}//if// 篮子多于苹果 按照苹果个数分else if(apple < basket){return ShareApple(apple,apple);}//elsereturn ShareApple(apple,basket-1) + ShareApple(apple - basket,basket);
}int main(){int apple,basket;//freopen("C:\\Users\\Administrator\\Desktop\\acm.txt","r",stdin);while(cin>>apple>>basket){cout<<ShareApple(apple,basket)<<endl;}//whilereturn 0;
}

[华为机试真题]70.分苹果相关推荐

  1. 【华为机试真题详解】不含 101 的数【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 示例2 题目解析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果 ...

  2. 【华为机试真题详解】开心消消乐【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 题目解析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备 ...

  3. 【华为机试真题 Python实现】篮球比赛【2022 Q1 Q2 | 200分】

    文章目录 前言 题目描述 示例 1 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您 ...

  4. 【华为机试真题详解】优选核酸检测点【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 题目解析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备 ...

  5. 【华为机试真题 Python实现】热点网站统计【2022 Q1 Q2 | 100分】

    文章目录 前言 题目描述 示例 1 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您 ...

  6. 【华为机试真题详解 Python实现】最差产品奖【2023 Q1 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 题目解析 参考代码 前言 <华为机试真题详解>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有 ...

  7. 【华为机试真题详解】日志首次上报最多积分【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述: 输出描述: 示例 1 题目分析 示例解析 示例分析清楚了那题目要怎么写呢? 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏 ...

  8. 【华为机试真题详解 Python实现】统计差异值大于相似值二元组个数【2023 Q1 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 题目解析 参考代码 前言 <华为机试真题详解>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可 ...

  9. 【华为机试真题详解】数大雁【2022 Q2 | 100分】

    文章目录 前言 详解试题 1419. 数青蛙 华为机试题. 数大雁 题目解析 数青蛙代码实现 数大雁不考虑叫声不完整的情况 数大雁考虑叫声不完整的情况 前言 <华为机试真题详解>专栏含牛客 ...

最新文章

  1. HttpPrinter与YunPrinter区别
  2. dotNET:怎样处理程序中的异常(实战篇)?
  3. 基于mycat的mysql_基于Mycat中间件的MySQL读写分离
  4. 配置豪华的 Windows 开发环境
  5. pycharm笔记-动手学深度学习(李沐)线性代数课后习题
  6. Otsu最大类间方差法
  7. Git查询一定时间范围团队代码提交日志
  8. 4宫格 android,四宫格拼图软件
  9. mooc 恋爱 人格 职场学习笔记
  10. 我的世界热力膨胀JAVA_我的世界热力膨胀MOD矿物类型介绍
  11. 7Ps营销理论(转载)
  12. 如何把证件照底色变白?怎样更换电子版证件照底色?
  13. C语言学习笔记(15)——结构体程序设计
  14. RTOS学习笔记--时间片调度
  15. leetcode-cpp 535.TinyURL的加密和解密
  16. Java基础:华为云java基础函数题(一)
  17. mysql5.7连接驱动
  18. 麦肯锡最新调查:大多数公司缺乏人工智能的基础设施
  19. 美高G3便携智能微型投影机 春节显身手
  20. HMAC在“挑战/响应”(Challenge/Response)身份认证的应用

热门文章

  1. 大数据开源框架之基于Spark的气象数据处理与分析
  2. 【GNN存在的问题和未来研究方向】
  3. (转)迅雷创始人程浩:人工智能创业的6大核心问题
  4. 记忆力训练--网页小游戏
  5. ArcGIS 要素融合工具(dissolve)使用方法
  6. shell清除历史记录
  7. Redis的另外的数据类型
  8. 塔顶分凝器全凝器区别_塔顶全凝器改为分凝器后,其他操作条件不变,则所需理论塔板数()。...
  9. 为何你上了那么多软装培训班还是做不了整体软装设计?
  10. Branching Program(5-PBP)