LeetCode刷題知識點總結——回溯演算法
阿新 • • 發佈:2022-04-05
一、理論基礎
1.回溯演算法主要用於解決以下問題:組合、排列、切割、子集、排列、棋盤。
void backtracking(引數) {
if (終止條件) {
存放結果;
return;
}
for (選擇:本層集合中元素(樹中節點孩子的數量就是集合的大小)) {
處理節點;
backtracking(路徑,選擇列表); // 遞迴
回溯,撤銷處理結果
}
}
3.組合問題
class Solution {
public:
vector<vector<int>> result; // 存放符合條件結果的集合
vector<int> path; // 用來存放符合條件結果
void backtracking(int n, int k, int startIndex) {
if (path.size() == k) {
result.push_back(path);
return;
}
for (int i = startIndex; i <= n; i++) {
//剪枝優化:在集合n中至多可開始的位置:n-(k-path.size())+1
path.push_back(i); // 處理節點
backtracking(n, k, i + 1); // 遞迴
path.pop_back(); // 回溯,撤銷處理的節點
}
}
vector<vector<int>> combine(int n, int k) {
result.clear(); // 可以不寫
path.clear(); // 可以不寫
backtracking(n, k, 1);
return result;
}
};
4.組合總和問題
class Solution {
public:
vector<vector<int>> result; // 存放符合條件結果的集合
vector<int> path; // 用來存放符合條件結果
void backtracking(vector<int>& num, int target,int sums,int startIndex) {
if(sums>target) return;
if (sums==target) {
result.push_back(path);
return;
}
for (int i = startIndex; i < num.size(); i++) {
//剪枝優化:在集合n中至多可開始的位置:n-(k-path.size())+1(如果規定了組合個數,且是遞增陣列)
path.push_back(num[i]); // 處理節點
sums +=num[i];
backtracking(num, target, sums,i ); // 遞迴
sums-=num[i];
path.pop_back(); // 回溯,撤銷處理的節點
}
}
vector<vector<int>> combine(vector<int>& num, int target) {
result.clear(); // 可以不寫
path.clear(); // 可以不寫
backtracking(num, target,0,1);
return result;
}
};
TRANSLATE with x English TRANSLATE with EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back 此頁面的語言為中文(簡體) 翻譯為
- 中文(簡體)
- 中文(繁體)
- 丹麥語
- 烏克蘭語
- 烏爾都語
- 亞美尼亞語
- 俄語
- 保加利亞語
- 克羅埃西亞語
- 冰島語
- 加泰羅尼亞語
- 匈牙利語
- 卡納達語
- 印地語
- 印尼語
- 古吉拉特語
- 哈薩克語
- 土耳其語
- 威爾士語
- 孟加拉語
- 尼泊爾語
- 布林語(南非荷蘭語)
- 希伯來語
- 希臘語
- 庫爾德語
- 德語
- 義大利語
- 拉脫維亞語
- 挪威語
- 捷克語
- 斯洛伐克語
- 斯洛維尼亞語
- 旁遮普語
- 日語
- 普什圖語
- 毛利語
- 法語
- 波蘭語
- 波斯語
- 泰盧固語
- 泰米爾語
- 泰語
- 海地克里奧爾語
- 愛沙尼亞語
- 瑞典語
- 立陶宛語
- 緬甸語
- 羅馬尼亞語
- 寮國語
- 芬蘭語
- 英語
- 荷蘭語
- 薩摩亞語
- 葡萄牙語
- 西班牙語
- 越南語
- 亞塞拜然語
- 阿姆哈拉語
- 阿爾巴尼亞語
- 阿拉伯語
- 韓語
- 馬爾加什語
- 馬拉地語
- 馬拉雅拉姆語
- 馬來語
- 馬耳他語
- 高棉語