回溯法的算法模板和基本操作
回溯伪代码模板
result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择
题目
LeetCode
字符串全排列:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/
N皇后:
先从全排列说起;
字符串全排列
其实数字全排列,字符串全排列异曲同工,都是将元素存在数组里,vector 或者string;
先看代码
class Solution {
public:
vector<string> ans;
vector<string> permutation(string s) {
vector<bool> used(s.size(),false);
sort(s.begin(),s.end());
string track = "";
backtrack(s,track,used);
return ans;
}