跳转至

关键词:所有的所有可能的

解题框架

回溯就是纯暴力穷举,算法复杂度一般都很高 递归之前做选择,递归之后撤销选择

多重循环一般是不够的。 - 条件 - 路径path - 选择列表:核心--选择的策略决定解题思路

//答案
vector<int> result;

//路径:也可以声明在外面

void backtrack(路径选择列表)
    if(满足条件)
        result.add();
        return;
    for(选择 in 选择列表)
        #做选择
        将该选择从选择列表移除 
        路径.add(选择)
        backtrack(路径选择列表)
        #撤销选择
        路径.remove(选择) 
        将该选择再加入选择列表