腾讯云智笔试算法题——分苹果

文章提供了一个Java程序,通过迭代分配苹果,确保小明与其他孩子的苹果数差不超过1,解释了代码逻辑和测试用例,展示了如何在编程中处理这种公平分配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有m个苹果,n个小孩。每个小孩都有一个编号,小明的编号是。要尽量公平的分苹果,相邻编号的小孩分到的苹果数目差距不能大于1。
 请问如何在满足相邻编号的小孩分到的苹果数目差距不能大于1的情况下,小明分配到的苹果数目最多,并且输出这个最大值,每个小朋友至少需分配到一个苹果。

输入描述
第一行输入三个整数。

输出描述
输出一行,表示小明分配到苹果个数的最大值。

示例 1
4 6 2
输出
2

说明

可以这样分配1 2 2 1。可以小明分配到了2个苹果。

代码如下(舍友给的思路和代码,有一个大佬舍友的感觉真好):

欢迎指正和贡献测试用例,因为平台关了不能验证是不是完全正确,但是感觉思路没有问题。

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();
        System.out.println(maxApplesFork(m,n,k));
    }
    public static int maxApplesFork(int m, int n, int k) {
        //m苹果、n人数、k小明所在位置
        if (k > n)
            return -1;//小明所在下标大于总人数
        int left = k - 1, right = n - k, used = n;
        //左边人数、右边人数、
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值