- 回溯算法可以当作是二叉树的结构进行分析,看在叶节点的位置是什么条件收获结果
- 每个抛进去的结果都是到叶子节点的路径
以leetcode17为例:
每一层遍历的是每一个号码对应的字符串,当号码全部遍历完成就可以返回结果,所以终止条件是(index==string.length());index是层数,string是号码。
每一层的操作是遍历每个号码对应的字符串,所以操作的for循环遍历的是每个号码索引的index的每个字符,将每个字符加入路径path;在最后返回结果时将所有果实path添加进返回结果。
回溯模板
void backtracking(int index,int n,string& digits){
if(满足终止条件){
result.push_back(path);
return ;
}
char c=digits[index];
//操作
for(int i=0;i<m[c].size();i++){
path.push_back(m[c][i]);
backtracking(index+1,n;digits);
path.pop_back();//回溯
}
}
string也可以像vector一样做pop_back()和push_back()操作
标签:index,遍历,string,号码,int,back,77,leetcode17 From: https://www.cnblogs.com/wangkaixin-yy/p/17730652.html