分月饼 java题解

在这里插入图片描述

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); 
        int m = sc.nextInt(); // 读取员工数量m
        int n = sc.nextInt(); // 读取月饼数量n
        // 调用distribute方法并打印返回的分配方法总数
        //先默认每人分一个,修改remain和maxallow ,不计入后续计算。
        System.out.println(distribute(m, n-m, n-m, 0, new int[m]));
        sc.close();  
    }
    //m,distribution;remain,maxallow,index
    //员工数,分配计划;剩余月饼数,当前人可分配最大月饼数,当前人
    // 递归分配月饼的方法,从大到小分配,a>=b>=c...
    private static int distribute(int m, int remaining, int maxAllowed, int index, int[] distribution) {
        // 如果当前是最后一个员工,满足条件的话就完成了一次成功的分配
        if (index == m - 1) {
            // 检查剩余的月饼是否可以全部分配给最后一个员工
            // 并且满足最大和最小月饼数差值不超过3的条件
            if (remaining <= maxAllowed && (index == 0 || Math.abs(distribution[index - 1] - remaining) <= 3)) {
                return 1; // 如果满足条件,返回1种方法
            }
            return 0; // 如果不满足条件,返回0种方法
        }
        //对当前员工进行再分配
        int ways = 0; // 初始化分配方法数为0
        // 确定当前员工可以再分配的月饼数的起始值(每人本来就有1个)
        int start = (index == 0) ? 0 : distribution[index - 1] - 3;//上一个 - 当前 <= 3
        // 确定当前员工可以再分配的月饼数的结束值
        int end = Math.min(remaining, maxAllowed);//不能超过当前剩余总数,不能超过上限

        // 遍历所有可能的分配数量
        for (int i = start; i <= end; i++) {
            distribution[index] = i; // 尝试再分配i个月饼给当前员工
            // 如果当前分配满足最大和最小月饼数差值不超过3的条件
            if (index == 0 || Math.abs(distribution[index - 1] - i) <= 3) {
                // 递归调用distribute方法,计算剩余员工和月饼的分配方法
                ways += distribute(m, remaining - i, i, index + 1, distribution);
                //剩余月饼=上次剩余月饼-分给当前员工的;下一个员工的月饼不得大于当前员工,上限为当前员工的月饼数
            }
        }

        return ways; // 返回总的分配方法数
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

​慧天[HTWATER]可以与与SWMM模型之间实现转换吗?

​慧天[HTWATER]软件简介 针对城市排水系统基础设施数据管理的需求&#xff0c;以及水文、水力及水质模拟对数据的需求&#xff0c;实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。可以对城市低影响开…

echarts仪表盘特殊样式

const drawChartOption function (value, max) {const colorConfig {name: 测试,colorList: {text: #fff,line2: {type: linear,x: 0, // 右y: 0, // 下x2: 1, // 左y2: 0, // 上colorStops: [// {// offset: 0,// color: transparent// },{offset: 0.1,color: #031e…

TikTok防关联引流系统:全球多账号运营的终极解决方案

tiktok防关联引流系统介绍&#xff0c;tiktok防关联系统是基于tiktok生态研发的效率工具&#xff0c;帮你快速实现tiktok全球多账号运营&#xff0c;系统配备了性能强劲的安卓&#xff0c;防关联智能终端&#xff0c;可一建创建全球多国手机环境&#xff0c;完美满足各类app软件…

CX3324A是德科技CX3324A器件电流波形分析仪

181/2461/8938产品概述&#xff1a; 器件电流波形分析仪&#xff0c;1 GSa/s&#xff0c;14/16 位&#xff0c;4 通道 主机功能特性 为电流和差分传感器以及无源探头接口适配器提供 4 个模拟通道带宽选件&#xff1a;50 MHz、100 MHz、200 MHz存储器深度选件&#xff1a;4 M…

eclipse操作

1. 屏蔽不用的代码或文件夹 右键需要屏蔽的文件夹或文件&#xff0c;选择properties&#xff0c;选择c/c build &#xff0c;在Exclude resource from build 前面勾选&#xff0c;然后点击apply应用&#xff0c;就屏蔽了这个文件夹或者文件了&#xff0c;编译时就会忽略。 设置…

浅聊什么是Redis?

需求&#xff1a;MySQL面临大量的查询&#xff0c;即读写操作&#xff0c;因此类比CPU&#xff0c;给数据加缓存&#xff0c;Redis诞生。应用程序从MySQL查询的数据&#xff0c;在Redis设置缓存&#xff08;记录在内存中&#xff0c;无需IO操作&#xff09;&#xff0c;后再需要…

Linux(CentOS)安装Redis教程_简单快捷

一、安装依赖 因为redis是用C语言开发的&#xff0c;所以在安装之前需要确定是否安装gcc环境&#xff08;gcc -v&#xff09;&#xff0c;如果没有安转可以执行一下命令进行安装 [rootlocalhost ~]# yum install -y gcc 二、下载安装包 1.在官网先进行下载 官网地址&#x…

Node.js-------初识Node.js与内置模块

能够知道什么是 Node.js能够知道 Node.js 可以做什么能够说出 Node.js 中的 JavaScript 的组成部分能够使用 fs 模块读写操作文件能够使用 path 模块处理路径能够使用 http 模块写一个基本的 web 服务器 一.初识Node.js 1.浏览器中的 JavaScript 的组成部分 2.Node.js 简介 …

从“量子”到分子:探索计算的无限可能 | 综述荐读

在2023年年末&#xff0c;两篇划时代的研究报告在《科学》&#xff08;Science&#xff09;杂志上引发了广泛关注。这两篇论文分别来自两个研究小组&#xff0c;它们共同揭示了单氟化钙分子间相互作用的研究成果&#xff0c;成功地在这些分子间创造出了分子量子比特。这一成就不…

理解二分类场景评估中的Recall和Precision

场景解释&#xff1a; 二分类场景会有两种输出。我的样本里有猫的图片和其他的图片。我的输出值是“是猫”和“非猫”。这个场景下&#xff0c;“是猫”是我的正样本(Postive)。“非猫”是我的负样本(Negative)。 Confusion matrix: 横向表示预测的结果。纵向表示真实的结果。…

生命之重-ICU门口的守望人

有人说如果没有经历过在ICU门口守候的人&#xff0c;就无法真正懂得珍惜生命。但实际情况也未必尽然&#xff0c;不过这种经历确实可以教会你懂得珍惜&#xff0c;当然希望大家都不要亲身经历。我希望能够通过讲述一个真实的故事来呈现这一观点&#xff0c;而不是令人难以接受的…

Linux部署Kafka2.8.1

安装Jdk 首先确保你的机器上安装了Jdk&#xff0c;Kafka需要Java运行环境&#xff0c;低版本的Kafka还需要Zookeeper&#xff0c;我此次要安装的Kafka版本为2.8.1&#xff0c;已经内置了一个Zookeeper环境&#xff0c;所以我们可以不部署Zookeeper直接使用。 1、解压Jdk包 t…

idea了解

1、快捷键 1.1、编辑美化相关 1.1.1、双击选中一个单词&#xff0c;三击选中一行代码 1.1.2、ctrlD&#xff1a;快速粘贴复制&#xff1b;光标所在复制 1.1.3、altinsert&#xff1a;构造方法的快速生成&#xff1b;toString方法快速生成&#xff1b;等等 1.1.4、ctrlR:快…

怎样给文件夹中的文件依次编号?选择合适的方法给文件依次编号

在日常生活和工作中&#xff0c;我们经常需要对文件夹中的文件进行编号&#xff0c;以便更好地管理和查找。编号的方式多种多样&#xff0c;可以根据不同的需求和场景来选择。下面&#xff0c;我将详细介绍如何给文件夹中的文件依次编号。 一、了解编号的目的和需求 在给文件编…

基于51单片机的智能门禁系统仿真设计

**单片机设计介绍&#xff0c;基于51单片机的智能门禁系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的智能门禁系统仿真设计概要 一、设计概述 本设计旨在利用51单片机为核心控制器&#xff0c;结合…

为什么品牌宣传需要深度稿件?媒介盒子揭秘

在信息洪流中&#xff0c;品牌想要占据用户心智仅靠传统的广告方式很难达成目标&#xff0c;只有真正有价值的信息才能吸引用户注意力&#xff0c;品牌方可以通过深度稿件来实现。 深度传播稿是一种高质量的、需要花费较长时间和精力来撰写的宣传文章&#xff0c;篇幅较长&…

SpringBoot:自定义线程池配置类

文章目录 一、前言二、案例展示1、初始版本2、代码审核意见和优化建议3、潜在问题和风险4、优化建议5、优化后的代码 三、具体使用 一、前言 有时候我们在项目中做一些长链路的跑批任务时&#xff0c;基于Springboot项目的定时任务&#xff0c;我们可以指定一个自定义的线程配…

LeetCode-热题100:206. 反转链表

题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a; head [1,2,3,4,5] 输出&#xff1a; [5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a; head [1,2] 输出&#xff1a; [2,1] 示例 3…

如何才能实现基坑自动化监测?

基坑自动化监测是一个系统性的过程&#xff0c;它涉及对基坑整体情况的全面了解和分析&#xff0c;确定监测指标&#xff0c;选择合适的监测传感器并进行安装和调试&#xff0c;配置相应的数据采集、传输和管理软件系统&#xff0c;以及进行系统的调试、定期维护和数据分析。以…

matlab中旋转矩阵函数

文章目录 matlab里的旋转矩阵、四元数、欧拉角四元数根据两向量计算向量之间的旋转矩阵和四元数欧拉角转旋转矩阵旋转矩阵转欧拉角旋转矩阵转四元数参考链接 matlab里的旋转矩阵、四元数、欧拉角 旋转矩阵dcmR四元数quatq[q0,q1,q2,q3]欧拉角angle[row,pitch,yaw] % 旋转矩阵…