如何在华为OD机试中获得满分?Java实现【放苹果】一文详解!

news2024/11/25 23:01:29

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
  • 2. 输入描述
  • 3. 输出描述
  • 4. Java算法源码
  • 5. 测试
  • 6.解题思路

1. 题目描述

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

注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。

数据范围:0≤m≤10 ,1≤n≤10 。

2. 输入描述

输入两个int整数。

3. 输出描述

输出结果,int型。

4. Java算法源码

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()){
        int m = scanner.nextInt();
        int n = scanner.nextInt();
        System.out.println(count(m, n));
    }
}

// 递归功能:当前持有m个苹果,有n个盘子可供存放,返回摆放方案数
private static int count(int m, int n) {
    // 递归出口:当苹果数m=0, 此时表示什么都不做,输出1种方案,再递归下去m<0,题目要求m>=0
    // 当盘子只有一个时,剩下的苹果m只能全部摆放这个盘子,递归返回1种方案,再递归下去n==0, 题目要求n>=1
    if(m == 0 || n == 1) {
        return 1;
    }
    // 当盘子数大于苹果数,一定有n-m个盘子空着,而且每个盘子都一样,因此count(m,n)==count(m,n-1)
    if(n > m) {
        return count(m, n-1);
    } else {
        // 当盘子数<=苹果数,有两种情况:
        // 1.至少有一个盘子可以不放,因此count(m, n-1)
        // 2.至少每个盘子都有一个苹果,摆放后苹果数为(m-n),因此coutn(m-n, n)
        return count(m, n - 1) + count(m - n, n);
    }
}

5. 测试

在这里插入图片描述

6.解题思路

  1. 读取输入的整数 m 和 n。
  2. 创建一个递归函数 count(m, n) 来计算当前持有 m 个苹果,有 n 个盘子可供存放时的摆放方案数。
  3. 定义递归函数的终止条件:
    • 当苹果数 m 等于 0 时,表示什么都不做,返回 1 种方案。
    • 当盘子数 n 等于 1 时,剩下的苹果 m 只能全部摆放在这个盘子中,返回 1 种方案。
  4. 当盘子数 n 大于苹果数 m 时,一定有 n - m 个盘子空着,而且每个盘子都一样,因此 count(m, n) 等于 count(m, n-1)。
  5. 当盘子数 n 小于等于苹果数 m 时,有两种情况:
    • 至少有一个盘子可以不放苹果,因此 count(m, n) 等于 count(m, n-1)。
    • 至少每个盘子都有一个苹果,摆放后剩下的苹果数为 m - n,因此 count(m, n) 等于 count(m-n, n)。
  6. 在主函数中,调用递归函数 count(m, n) 并输出结果。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/578641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot——原理(自动配置+原理分析-源码跟踪)

源码跟踪 从Springboot的启动类进入&#xff0c;进行分析. 源码跟踪技巧 在以后接触各种框架的时候&#xff0c;如果需要查看源码&#xff0c;需要找到关键点和核心流程&#xff0c;先在宏观对整个原理和流程有一个认识&#xff0c;之后再去了解其中的细节。 按住Ctrl左键进…

[机缘参悟-98] :层次不同、维度不同、视角不同、结论不同

目录 全局VS具备&#xff0c; 总体V部分 认知的六个认知层次&#xff1a; 认知的六个立体化维度&#xff1a; 0、维空间&#xff0c;点思维 1、一维空间&#xff0c;直线思维 2、二维空间&#xff0c;平面思维 3、三维空间&#xff1a;立体思维。 4、四维空间&#xff…

(0)调优

文章目录 前言 1 调优过程说明 2 设置飞机进行调优 3 任务规划器助手 4 初始调优飞行 5 评估飞机的调优 6 手动调优 7 自动调优 8 输入整形 9 基于发射器的调优 10 配置Notch滤波器 11 配置飞行中的FFT 前言 在默认的 PID 设置下&#xff0c;ArduPilot 可以在开箱…

Windows PyCharm 2022/2023 使用Centos7 的虚拟环境 venv 实现文件实时同步 代码代码Git自动识别 解决 Samba Cannot Save File 的问题

前期准备 git报错 fatal: unsafe repository 解决方法 因为是远程文件夹&#xff0c;老版本时没这个问题&#xff0c;新版本git或者pycharm有这个限制&#xff0c;不能自动识别更改的代码&#xff0c;报unsafe.directory的问题&#xff0c;直接暴力解决&#xff0c;加* git c…

美债死期推迟

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在小号“刘教链Pro”发表了一篇《链上投票是社会契约的一种存证》&#xff0c;探讨未来组织和DAO的治理问题&#xff0c;欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币略有回升&#xff0c;从26.5k下方来到了26.5k…

风辞远的科技茶屋:可怖的AI

大家好&#xff0c;我是脑极体的风辞远。一直以来我们都在写大块文章&#xff0c;很少有机会跟大家聊天。时间长了&#xff0c;总觉得这种方式有一点冷漠感&#xff0c;不够轻松&#xff0c;加上往往每篇文章只聚焦一个话题&#xff0c;而我们产能有限&#xff0c;就会有很多值…

[创业之路-71] :创业思维与打工思维的区别

其实打工思维和创业思维最核心的本质区别是你是否愿意去尝试。 很多时候我打工的时候老板没发现我的潜质&#xff0c;所以我去创业了&#xff0c;这个没有&#xff0c;你打工的时候一定有一项极其长的长项&#xff0c;只不过当时你可能也没意识到&#xff0c;老板没意识到。 …

ChatGPT在App Store累计下载量已突破50万次;Anthropic已成功完成4.5亿美元C轮融资

&#x1f680; OpenAI的ChatGPT应用在苹果App Store上线6天时间内&#xff0c;累计下载量已突破50万次。 OpenAI的ChatGPT应用在苹果App Store上线6天时间内&#xff0c;累计下载量已突破50万次。 与微软必应等聊天机器人相比&#xff0c;其热度远超过且持续上升。 &#x1…

redis未授权访问漏洞

1、什么是redis未授权访问漏洞 Redis安装后&#xff0c;如果绑定在 0.0.0.0:6379&#xff0c;并且没有进行采用相关的策略&#xff0c;比如添加防火墙规则避免其他非信任来源 ip 访问等&#xff0c;这样将会将 Redis 服务暴露到公网上&#xff0c;如果在没有设置密码认证或使用…

如何顺序处理设备上报的数据

1. 引言 随着智能技术的发展&#xff0c;市场上出现了很多的智能设备&#xff0c;其具有连接网络的能力。用户可以实现远程控制&#xff0c;并且设备也可上报自己的状态&#xff0c;实现云端对设备的运行情况分析。在某些情况下需要保证设备上报状态的有序性&#xff0c;例如传…

简单介绍二叉树

前言 学习数据结构&#xff0c;二叉树是一大难点&#xff0c;也是一大重点&#xff0c;小伙伴们和我一起看看二叉树的知识吧&#xff01; 本文代码是Java。 目录 前言 一、什么是二叉树 二、二叉树的遍历 &#xff08;一&#xff09;前序遍历 &#xff08;二&#xff09;中…

C++ 入门导引(这是一篇由GPT4写的文章)

C 应用场景 C 是一种广泛应用的编程语言&#xff0c;拥有多种使用场景。以下是 C 的一些主要应用场景&#xff1a; ​1. 游戏开发&#xff1a;C 常用于游戏开发&#xff0c;尤其是大型 3D 游戏。它可以轻松地与图形 API&#xff08;如 OpenGL 和 DirectX&#xff09;集成&…

element-ui树形控件el-tree详解

概述 这里我利用element-ui开发一个vue的树形组件 引入element-ui 安装element-plus cnpm install element-plus --save 安装按需导入 cnpm install -D unplugin-vue-components unplugin-auto-import 修改vite.config.js配置按需加载 import AutoImport from unplugin-a…

云原生架构:创新未来的应用开发和部署范式

点击上方“程序猿技术大咖”&#xff0c;关注并选择“设为星标” 回复“加群”获取入群讨论资格&#xff01; 摘要&#xff1a;本文深入探讨云原生架构的优势、实施指南以及关键技术和工具。通过容器化、微服务架构、持续交付和自动化管理等实践&#xff0c;云原生架构为企业提…

盘点一个Python列表的基础题目

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 随意春芳歇&#xff0c;王孙自可留。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python最强王者群【eric】问了一个Python列表基础的问题&#x…

web练习第二周

前言&#xff1a;&#xff08;博主个人学习笔记&#xff0c;不用看&#xff09;web练习第二周&#xff0c;仅做出前3题。相比于第一周&#xff0c;难度大幅增加&#xff0c;写题时就算看了wp还是像个无头苍蝇一样到处乱创&#xff0c;大多都是陌生知识点&#xff0c;工具的使用…

购买两块巧克力-第105场力扣夜喵双周赛-java双百方案

一、题目描述 给你一个整数数组 prices &#xff0c;它表示一个商店里若干巧克力的价格。同时给你一个整数 money &#xff0c;表示你一开始拥有的钱数。 你必须购买 恰好 两块巧克力&#xff0c;而且剩余的钱数必须是 非负数 。同时你想最小化购买两块巧克力的总花费。 请你…

【原创】浅谈EtherCAT主站EOE(上)-EOE网络

版权声明&#xff1a;本文为本文为博主原创文章&#xff0c;未经同意&#xff0c;禁止转载。如有问题&#xff0c;欢迎指正。博客地址&#xff1a;https://www.cnblogs.com/wsg1100/ 文章目录 一、EoE二、EoE服务规范EtherCAT主站如何提供EoE服务&#xff1f; 三、EoE网络EOE网…

我用GPT搭建了一个虚拟女友!

Datawhale干货 作者&#xff1a;仲泰&#xff0c;Datawhale成员 1. 作者知乎&#xff1a;https://www.zhihu.com/people/yong-tan-39-67 2.我用GPT搭建了一个虚拟女友-哔哩哔哩&#xff1a;https://b23.tv/GYYwMcq 3. 五月学习&#xff1a;ChatGPT应用组队学习来了&#xff01…

原生canvas标签画线——直线、平行线(设置不同颜色和宽度)

1.一条直线 效果图如下&#xff1a; 代码如下&#xff1a; <!--* Author: your name* Date: 2023-05-24 17:50:28* LastEditTime: 2023-05-24 18:06:39* LastEditors: localhost* Description: In User Settings Edit* FilePath: /canvas/day01/体验canvas.html --> &l…