面经算法

有m个苹果,分给n个人,每人可以分到0-m个苹果,求有多少种分法?

做了一个回溯题,还记得一刷力扣的时候回溯真的一塌糊涂

在别人面经上看到这个题,想着做一下没做出来,重新记起回溯!!

import java.util.*;
import java.util.ArrayList;
import java.util.List;
class Solution {


    // 有m个苹果,分给n个人,每人可以分到0-m个苹果,求有多少种分法
    public static List<List<Integer>> getAllDistributions(int m, int n) {
        List<List<Integer>> result = new ArrayList<>();
        List<Integer> path = new ArrayList<>();
        backtrack(n, m, path, result);
        return result;
    }


    private static void backtrack(int remainPeople, int remainApples, List<Integer> path, List<List<Integer>> result) {
        // 终止条件
        if (remainPeople == 1) {
            // 就把剩余的苹果全部给最后一个人
            path.add(remainApples);
            result.add(new ArrayList<>(path));
            path.remove(path.size() - 1);
            return;
        }


        for (int i = 0; i <= remainApples; i++) {
            path.add(i);
            // 处理剩下的人
            backtrack(remainPeople - 1, remainApples - i, path, result);
            // 撤销选择:回溯,准备尝试其他分配
            path.remove(path.size() - 1);
        }
    }


}

#找工作的破防时刻##牛客解忧铺##笔试##重来一次,你会对开始求职的自己说#
全部评论
感觉用动态规划会好些
点赞 回复 分享
发布于 2025-12-24 10:02 黑龙江
不应该是排列组合吗?
点赞 回复 分享
发布于 2025-12-23 15:06 黑龙江
哇,你提到了回溯题,这个真是有点烧脑呢!不过看起来你已经对回溯有了更深的理解了,真厉害!你刚刚做的这个题目是求苹果分法的数量,对吧?我有点好奇,你最后得到的结果是几种分法呢?如果方便的话,能不能私信我,我们一起探讨一下这个题目的不同解法呀?点击我的头像,我们可以开始私信聊天哦~(≧▽≦)
点赞 回复 分享
发布于 2025-12-23 14:55 AI生成

相关推荐

2025-12-21 22:35
门头沟学院 Java
1、原理:每个线程维护一个ThreadLocalMap,以ThreadLocal为key存储变量副本,实现线程隔离。问题:内存泄漏(弱引用key被回收但value未清理)、父子线程无法传递。2、主要用于事务管理(TransactionSynchronizationManager)、请求上下文(RequestContextHolder)、安全上下文等,保证线程安全。3、冲突解决:ThreadLocalMap用线性探测,HashMap用链表+红黑树;扩容机制:ThreadLocalMap渐进式清理,HashMap一次性rehash;key类型:ThreadLocalMap的key是弱引用4、corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(空闲时间)、workQueue(任务队列)、threadFactory、rejectedExecutionHandler(拒绝策略)5、通过ThreadPoolExecutor的setter方法:setCorePoolSize()、setMaximumPoolSize()、setKeepAliveTime()等,结合配置中心实现热更新。6、监听配置变更→参数校验→调用线程池setter方法→记录变更日志,通常结合Apollo/Nacos等配置中心实现。7、Zookeeper:强一致性、自动过期、惊群效应Redis:高性能、需手动续期、主从切换可能丢锁8、原子性(SET&nbsp;NX&nbsp;EX)、锁续期、主从一致性、可重入性、公平性、异常释放等。9、基于业务执行时间统计(P99耗时&nbsp;×&nbsp;2-3倍)+&nbsp;网络延迟&nbsp;+&nbsp;安全边界,配合自动续期机制。10、定位:慢查询日志/监控工具&nbsp;→&nbsp;分析:EXPLAIN执行计划&nbsp;→&nbsp;优化:索引优化/SQL重写/分库分表&nbsp;→&nbsp;验证:压测对比&nbsp;→&nbsp;监控:持续观察
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务