自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

回溯算法:求組合問題!

開發(fā) 前端 算法
回溯算法其實(shí)就是暴力搜索,既然是暴力搜索為什么要非要用回溯呢?因?yàn)橐恍﹩栴}能暴力搜索出就不錯(cuò)了,找不出更好的辦法。

[[379493]]

 回溯算法大家是不是已經(jīng)快忘了,還記得組合問題應(yīng)該怎么求了么?哈哈哈

回溯算法其實(shí)就是暴力搜索,既然是暴力搜索為什么要非要用回溯呢?因?yàn)橐恍﹩栴}能暴力搜索出就不錯(cuò)了,找不出更好的辦法。

給定兩個(gè)整數(shù) n 和 k,返回 1 ... n 中所有可能的 k 個(gè)數(shù)的組合。

如果用for循環(huán)嵌套一層一層去解決這個(gè)問題,如果n為100,k為50呢,那就50層for循環(huán),此時(shí)就發(fā)現(xiàn)單純的暴力不可以了。

回溯算法就登場(chǎng)了。

回溯算法中的用遞歸來(lái)做for循環(huán)層疊嵌套(可以理解是開k層for循環(huán))

每一次的遞歸中嵌套一個(gè)for循環(huán),那么遞歸就可以解決多層嵌套循環(huán)的問題了。

我在文章回溯算法:求組合問題! 中,同時(shí)還給出了回溯三部曲。按照這個(gè)方法來(lái),就發(fā)現(xiàn)回溯算法其實(shí)并不難咯。

題目鏈接:https://leetcode-cn.com/problems/combinations/

回溯算法模板如下:

  1. void backtracking(參數(shù)) { 
  2.     if (終止條件) { 
  3.         存放結(jié)果; 
  4.         return
  5.     } 
  6.  
  7.     for (選擇:本層集合中元素(樹中節(jié)點(diǎn)孩子的數(shù)量就是集合的大小)) { 
  8.         處理節(jié)點(diǎn); 
  9.         backtracking(路徑,選擇列表); // 遞歸 
  10.         回溯,撤銷處理結(jié)果 
  11.     } 

本文轉(zhuǎn)載自微信公眾號(hào)「代碼隨想錄」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系代碼隨想錄公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 代碼隨想錄
相關(guān)推薦

2023-12-15 09:49:54

回溯解決組合問題數(shù)組

2022-02-04 21:56:59

回溯算法面試

2023-06-05 07:30:51

2021-08-05 06:54:04

回溯算法機(jī)器人

2020-10-12 11:48:31

算法與數(shù)據(jù)結(jié)構(gòu)

2011-04-20 11:22:51

Java

2011-04-20 10:58:34

Java

2009-09-15 17:45:34

Linq多條件

2021-10-18 07:51:39

回溯算法面試

2010-06-18 09:13:14

Linux Accep

2021-09-14 07:26:26

組合問題循環(huán)

2020-09-15 12:40:16

回溯算法代碼回溯法

2021-09-13 11:32:45

回溯算法理論

2009-08-20 13:52:25

C#正則表達(dá)式

2021-10-12 08:43:20

排列回溯算法

2022-09-09 15:01:37

物聯(lián)網(wǎng)AIoT人工智能

2012-11-16 10:15:12

算法

2019-12-03 09:00:00

DevOps開發(fā)工具

2021-11-19 07:54:40

前端

2024-08-22 18:49:23

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)