JAVA算法:M个苹果放到N个盘子中的方法(JAVA代码)

题目描述:

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?

说明1:5,1,1和1,5,1 是同一种放置方法。

说明2:1<=M,N<=10。

样例数据:M=7;N=3时,有8种方法


问题分析:递归算法

分为两种状况,m为苹果数;n为盘子数

第一种情况:当苹果的数量小于盘子的数量时,即 m<n 时,问题就是转化为将 m 个苹果放到 m 个盘子中;

第二种情况:当苹果数大于盘子数量时,即 m>=n 时,要分析:

(1)将至少其中一个盘子不放,那就是 m 个苹果放到 (n-1) 个盘子中的方法

(2)每个盘子放一个,然后就是(m-n)个放在 n 个盘子的方法


算法设计

package com.bean.algorithm.basic;public class AppleDemo {/** 递归算法* */public int solve(int m,int n) {if (n == 1 || m == 1 || m==0) {return 1;}if (m < n) { // 苹果数量小于盘子数量return solve(m, m);} else {return solve(m, n - 1) + solve(m - n, n);}}public static void main(String[] args) {AppleDemo ballandbox = new AppleDemo();int m = 7; //7个苹果int n = 3; //3个盘子int result = ballandbox.solve(m, n);System.out.println("result = " + result);}}

程序运行结果:

result = 8

JAVA算法:M个苹果放到N个盘子中的方法(JAVA代码)相关推荐

  1. 【放苹果】m个苹果放到n个盘子中

    m个相同的苹果,放在n个相同的盘子中,由于相同,使用排列组合的方法不好处理.这里选用递归调用的方式解决问题: (8个苹果,放在3个盘子里)= (8个苹果,放在2个盘子) +(5个苹果,放在2个盘子[每 ...

  2. java 引用其他类_java如何调用其他类中的方法?

    1.java如何调用其他类中的方法 java调用另一个类的方法: java类有两种方法一种是类方法就是用static修饰的,一种是实例方法,就是没有static修饰的方法.类方法可以同时类名,方法名的 ...

  3. StrUtil.removeAll,java: 无法将类 cn.hutool.core.text.CharSequenceUtil中的方法 removeAll应用到给定类型;

    情况及问题 //原始代码 String s = StrUtil.removeAll(data, "{", "\"", "[", & ...

  4. 操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...

    合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分 ...

  5. java对象序列化存储到文件、从文件中反序列化读取java对象

    1.首先,对即将要操作的java对象的类需要实现序列化接口Serializable,代码如下: import java.io.Serializable; public class User imple ...

  6. Java中关于iPhone类的代码,【java算法】买苹果

    题目:有600个苹果,要求分装在10个盒子中.对于顾客要求的任意苹果数都可以通过此10个盒子进行组合得到. 分析:1.首先要设计10个盒子所装苹果的数目.由二进制与十进制的转换可知,2的倍数相加可以的 ...

  7. java算法实验标尺问题_在codeigniter项目中使用标尺库

    我正在尝试将下面链接中可用的标尺库集成到我的codeigniter项目中 . 我使用这些链接中给出的步骤安装和配置它 . 但仍然无法使用库中的方法 . 我尝试了库中的示例代码,但它不起作用 . 看起来 ...

  8. 1000以内所有同构数java算法_使用c语言求1到1000同构数的代码

    使用c语言求1到1000同构数的代码 发布时间:2020-04-30 14:39:17 来源:亿速云 阅读:679 作者:小新 今天小编给大家分享的是使用c语言求1到1000同构数的代码,相信很多人都 ...

  9. java程序能转变为javafx_如何将intellij中的普通Java项目转换为JavaFx项目

    小编典典 没有什么可以转换的. 我认为"正常" Java项目和JavaFX项目之间在Idea中没有任何区别. 当然,在Idea 12.x +中,可以使用向导创建新的JavaFX项目 ...

  10. RRT* 算法原理以及在二维仿真环境中的实现 -- Python代码实现

    RRT* 算法是在 RRT 的基础上做出了一些改进,主要改进的点有两点: 新结点生成后,优化其父结点. 在生成新结点 new_node 后,首先设置一个搜索区域的半径,搜索该区域中的树结点,并计算其中 ...

最新文章

  1. AndroidStudio 在工具栏上设置显示前进和后台的方法
  2. 6条可以成为更好程序员的建议
  3. Hibernate二级缓存与查询缓存的组合探究
  4. linux firefox dns缓存,为什么有了DNS Client ,IE,Firefox,Chrome还要再缓存DNS呢?
  5. 【深度学习入门到精通系列】Python批量实现图像镜像翻转
  6. Py之matplotlib:在matplotlib库中利用legend函数创建自定义图例(代码实现)
  7. Excel电子表格输入技巧大比拼
  8. oracle中nvl()函数
  9. flutter 页面加载动画_Flutter撸一个加载动画
  10. c# 过滤HTML代码 源代码,案例 下载
  11. javascript for in,for each,for循环遍历区别
  12. 老司机教你分析日志:分析用户的地理位置信息
  13. nginx之虚拟主机与请求的分发
  14. Java历程-初学篇 Day02变量,数据类型和运算符
  15. 统一对外的接口,支持requestBody以及表单提交的坑
  16. python字符串的基本操作_python-字符串基本操作
  17. 图解Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN
  18. 二、逻辑回归LR面试题总结
  19. 晶振知识,及晶振振荡电路
  20. Java - 为什么String在Java中是不可变的?

热门文章

  1. JAVA 配置文件 路径_Java配置文件读取和路径设置
  2. 如何使用Python玩转PDF各种骚操作?你看了就知道。
  3. OpenCV --- CAMShift对象跟踪
  4. 【pandas教程】索引操作
  5. 人工智能艺术:一场用算法固定创意的马拉松
  6. AVI视频怎么转换成MOV视频
  7. 1.6QQ拼音输入的亮点——相框
  8. 网易公司首席执行官 丁磊
  9. PowerBuilder制作纸牌游戏
  10. 天空机器人 联动存档_Wood R4 V1.38内核下载,自选存档大小,修正天空机器人美版等反烧录...