题目:
解析:
代码:
javaprivate List<List<Integer>> ret; private List<Integer> path; private int n,k; public List<List<Integer>> combine(int _n, int _k) { n = _n; k = _k; path = new ArrayList<>(); ret = new ArrayList<>(); dfs(1); return ret; } private void dfs(int start){ if(path.size() == k){ ret.add(new ArrayList(path)); return; } for(int i = start; i <= n; i++){ path.add(i); dfs(i+1);//剪枝:选过接着往后选 path.remove(path.size()-1);//恢复现场 } }
穷举vs暴搜vs深搜vs回溯vs剪枝系列一>组合
robin_suli2024-12-29 18:49
相关推荐
czxyvX15 分钟前
06-排序2301_8203010236 分钟前
【机器学习】支持向量机拾忆-eleven42 分钟前
NLP学习路线图(二十):FastText你真会1 小时前
【数据结构知识分享】顺序表详解@蓝莓果粒茶2 小时前
LeetCode第245题_最短单词距离III闻闻不会编程2 小时前
704. 二分查找 (力扣)AndrewHZ2 小时前
【图像处理基石】立体匹配的经典算法有哪些?AndrewHZ2 小时前
【图像处理入门】4. 图像增强技术——对比度与亮度的魔法调节不二狗3 小时前
每日算法 -【Swift 算法】查找字符串数组中的最长公共前缀不二狗3 小时前
每日算法 -【Swift 算法】将整数转换为罗马数字