回溯法總結

2021-07-05 15:22:42 字數 2074 閱讀 7501

一般回溯法可以用兩種框架,一種遍歷方式(for迴圈),選擇方式(可以理解成到某一節點選擇或者不選)。

比較二者的差別:

1.採用遍歷方式,for(int i=dep;i選擇的方式記得判斷dep是否到達邊界dep==nums.size()同時記得dep++;

2.遍歷方式中for迴圈的臨時變數儲存的是temp[i],選擇方式中是temp[dep];

3.採用選擇方式中,pop完之後還需要繼續進行回溯,而for迴圈中不需要,因為。

乙個例子:

combination sum

given a set of candidate numbers (c

) and a target number (t

), find all unique combinations in c

where the candidate numbers sums to t

.the same repeated number may be chosen from c

unlimited number of times.

note:

for example, given candidate set2,3,6,7and target7

a solution set is: 

[7]

[2, 2, 3]

方法1:

class solution 

if (sum < 0) return;

for (int i = dep; i < candidates.size(); i++)

} vector> combinationsum(vector& candidates, int target)

};

方法二:

class solution 

if (target < 0) return;

if (dep == candidates.size())return;//若不採用for迴圈的方式加上dep邊界

temp.push_back(candidates[dep]);

backtracking(candidates, target - candidates[dep], dep);

temp.pop_back();

target += candidates[dep];//歸位

backtracking(candidates, target - candidates[dep], dep+1);//若不採用for迴圈的方式記得pop完繼續回溯

}vector> combinationsum(vector& candidates, int target)

};

subsets

given a set of distinct integers, nums, return all possible subsets.

note:

for example,

if nums

=[1,2,3], a solution is:

[

[3],

[1],

[2],

[1,2,3],

[1,3],

[2,3],

[1,2],

]

方法1:

class solution 

} vector> subsets(vector& nums)

};

方法2:

class solution 

temp.push_back(nums[dep]);

backtracking(nums, dep + 1);

temp.pop_back();

backtracking(nums, dep + 1);

} vector> subsets(vector& nums)

};

回溯法總結

1 回溯法解決老鼠迷宮問題 求一條路徑 static int maze static int starti 1,startj 1 入口s static int endi 7,endj 7 出口 static boolean falg false public static void visit in...

回溯法總結

1 什麼是回溯法 回溯法也可以叫做回溯搜尋法,它是一種搜尋的方式。其實現使用遞迴。其本質為窮舉所有可能,找到我們想要的解。想要提高回溯法的效率,只能通過剪枝操作,減少重複或者無效的計算,具體手段可以使加快取或者提前中斷回溯。2 回溯法實現 要實現回溯法,需要注意以下三點 a.函式的返回值及引數 b....

leetcode回溯法總結

2018.7.30 前文 回溯法和dfs是不一樣的,回溯法有自己很獨特的模板,dfs是一種思想,回溯法是dfs的一種實現。先來看回溯法的典型題型 find a path to success 有沒有解 find all paths to success 求所有解 1.求所有解的個數 2.求所有解的具...