首页 > 编程语言 >算法刷题-放苹果-JAVA

算法刷题-放苹果-JAVA

时间:2023-02-19 21:55:34浏览次数:33  
标签:10 JAVA 小于 int 算法 苹果 盘子 刷题

0x00 引言

为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。

题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。

0x01 难度等级

简单

0x02 代码

package 简单;

import java.util.Scanner;

/*

采用递归的思想将此事件无限细分,
每个事件可以分为f(m,n)=f(m-n,n)+f(m,n-1);
f(m-n,n)是当苹果数大于等于盘子数的情况,m个苹果,n个盘子,m>n时,每个盘子都能分到至少一个苹果,所以只需要考虑把剩下的m-n个苹果分给n个盘子的问题
f(m,n-1)是当苹果数小于盘子数的情况。苹果数小于盘子,至少是有一个盘子没有苹果,所以是把m个苹果分给n-1个盘子

当此事件分到苹果数为0或苹果数为1或盘子数为1的时候返回1,
当苹果数小于0或盘子数小于等于0返回0.

描述
把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。

数据范围:
0≤m≤10 ,

1≤n≤10 。

示例1
输入:
7 3

输出:
8
*
*
*
* */
public class 放苹果 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int m=sc.nextInt();
        int n=sc.nextInt();
        System.out.println(count(m,n));
    }
    public static int count(int m,int n)
    {
        if(m<0||n<=0)
            return 0;
        //细分到苹果数为一或盘子数为一的情况返回一
        if(n==1||m==0)//0≤m≤10 ,1≤n≤10
            return 1;
        //将此事件无线细分
        return count(m,n-1)+count(m-n,n);
    }
}

0x03 算法思想

考查递归的思想:
每个事件可以分为f(m,n)=f(m-n,n)+f(m,n-1); f(m-n,n)是当苹果数大于等于盘子数的情况,m个苹果,n个盘子,m>n时,每个盘子都能分到至少一个苹果,所以只需要考虑把剩下的m-n个苹果分给n个盘子的问题 f(m,n-1)是当苹果数小于盘子数的情况。苹果数小于盘子,至少是有一个盘子没有苹果,所以是把m个苹果分给n-1个盘子。主要是以下的临界值作为判断:
        if(n==1||m==0)//0≤m≤10 ,1≤n≤10
            return 1;

0x04 运行结果

标签:10,JAVA,小于,int,算法,苹果,盘子,刷题
From: https://www.cnblogs.com/cute-puli/p/17135702.html

相关文章

  • java的引用
    引用的概念每种编程语言都有自己操作内存中元素的方式,例如在c和c++里是通过指针,而java中通过引用,在java中一切都是对象,操作标识符就是一个引用判断是否回收某个对象引......
  • 算法刷题-尼科彻斯定理-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • Java的数据类型
                                               {整数类型       ......
  • 各大排序算法的优缺点以及实现方法
    这篇文章,我们来谈谈一些关于排序的东西注意!这篇文章在写的时候混淆了一个概念,“稳定”本义指的是能保证两个相等的数,经过排序之后,序列的前后位置顺序不变。在本文中理解成......
  • 考研算法辅导课笔记:第十四章--模拟,递推,bfs
    这节课完全是上机题,机试内容。想要保持排名靠前吗?那就多在上面投入时间,一般来说投入时间与排名成正比模拟题先讲一下做过的题目类型。比如说dfs,dp,贪心,从一堆方案中涨到......
  • Java 获取 List 中元素的所有子集
    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/17135599.html MavenDependency<dependency><groupId>com.google.guava</groupId><artifactId>......
  • 算法刷题-字符串最后一个单词的长度-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • Java开学考(用户注册与登录部分)
    .java文件:packagexuanke;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.S......
  • 外部排序【java实现】
    外部排序什么是外部排序?外部排序是一种把大量无序的数据,按一定的顺序排序的算法。它是一种非常适合处理海量数据的算法,其原理主要有以下几点:首先,将所有要排序的数据分......
  • 第十章 泛型算法
    第十章泛型算法泛型算法因为它们实现共同的操作,所以称之为“算法”;而“泛型”、指的是它们可以操作在多种容器类型上。泛型算法本身不执行容器操作,只是单独依赖迭代器......