回溯算法:求组合问题!

开发 前端 算法
回溯算法其实就是暴力搜索,既然是暴力搜索为什么要非要用回溯呢?因为一些问题能暴力搜索出就不错了,找不出更好的办法。

[[379493]]

 回溯算法大家是不是已经快忘了,还记得组合问题应该怎么求了么?哈哈哈

回溯算法其实就是暴力搜索,既然是暴力搜索为什么要非要用回溯呢?因为一些问题能暴力搜索出就不错了,找不出更好的办法。

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

如果用for循环嵌套一层一层去解决这个问题,如果n为100,k为50呢,那就50层for循环,此时就发现单纯的暴力不可以了。

回溯算法就登场了。

回溯算法中的用递归来做for循环层叠嵌套(可以理解是开k层for循环)

每一次的递归中嵌套一个for循环,那么递归就可以解决多层嵌套循环的问题了。

我在文章回溯算法:求组合问题! 中,同时还给出了回溯三部曲。按照这个方法来,就发现回溯算法其实并不难咯。

题目链接:https://leetcode-cn.com/problems/combinations/

回溯算法模板如下:

  1. void backtracking(参数) { 
  2.     if (终止条件) { 
  3.         存放结果; 
  4.         return
  5.     } 
  6.  
  7.     for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 
  8.         处理节点; 
  9.         backtracking(路径,选择列表); // 递归 
  10.         回溯,撤销处理结果 
  11.     } 

本文转载自微信公众号「代码随想录」,可以通过以下二维码关注。转载本文请联系代码随想录公众号。

 

责任编辑:武晓燕 来源: 代码随想录
相关推荐

2023-12-15 09:49:54

回溯解决组合问题数组

2022-02-04 21:56:59

回溯算法面试

2023-06-05 07:30:51

2021-08-05 06:54:04

回溯算法机器人

2020-10-12 11:48:31

算法与数据结构

2011-04-20 10:58:34

Java

2011-04-20 11:22:51

Java

2021-10-18 07:51:39

回溯算法面试

2009-09-15 17:45:34

Linq多条件

2020-09-15 12:40:16

回溯算法代码回溯法

2021-09-14 07:26:26

组合问题循环

2010-06-18 09:13:14

Linux Accep

2021-09-13 11:32:45

回溯算法理论

2009-08-20 13:52:25

C#正则表达式

2021-10-12 08:43:20

排列回溯算法

2021-11-19 07:54:40

前端

2019-12-03 09:00:00

DevOps开发工具

2022-09-09 15:01:37

物联网AIoT人工智能

2012-11-16 10:15:12

算法

2024-08-22 18:49:23

点赞
收藏

51CTO技术栈公众号