写点什么

代码随想录训练营 Day25 - 回溯(一)

作者:jjn0703
  • 2023-07-23
    江苏
  • 本文字数:549 字

    阅读完需:约 2 分钟

概念

回溯是一种暴力搜索的方法。

经典题型

  • 组合问题(不强调元素的顺序)

  • 切割问题

  • 子集问题

  • 排列问题(强调元素的顺序)

  • 棋盘(N 皇后、数独)

画图有助于理解

作业题

77. 组合


package jjn.carl.backtrack;
import java.util.ArrayList;import java.util.List;
/** * @author Jiang Jining * @since 2023-07-23 21:40 */public class LeetCode77 { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> result = new ArrayList<>(); backtrack(1, n, k, result, new ArrayList<>()); return result; } private void backtrack(int startIndex, int n, int k, List<List<Integer>> result, List<Integer> path) { if (path.size() == k) { result.add(new ArrayList<>(path)); return; } for (int i = startIndex; i <= n - (k - path.size()) + 1; i++) { path.add(i); backtrack(i + 1, n, k, result, path); path.remove(path.size() - 1); } } public static void main(String[] args) { System.out.println("new LeetCode77().combine(4,2) = " + new LeetCode77().combine(4, 2)); }}
复制代码


发布于: 刚刚阅读数: 5
用户头像

jjn0703

关注

Java工程师/终身学习者 2018-03-26 加入

USTC硕士/健身健美爱好者/Java工程师.

评论

发布
暂无评论
代码随想录训练营Day25 - 回溯(一)_jjn0703_InfoQ写作社区