77.组合

77.组合
简单的回溯法模板:

void backtracking(path,finalPath){
  if(终止条件){
    if(满足答案要求){
      finalPath.push_back(path);
      return;//此处不要忘记跳出循环
    }
  }
  getOptions();
  for(auot c:待选择列表){
    path.push_back(c);//压入
    backtracking(path,finalPath);
    path.pop_back();//回溯
  }
}

代码实现:

class Solution {
public:
    vector<int> path;
    vector<vector<int>> finalPath;
    void backtracking(int start,int &n,int &k){
        if(path.size()==k){
            finalPath.push_back(path);
            return;
        }
        for(int i=start;path.size()+n-i+1>=k;i++){
            path.push_back(i);
            backtracking(i+1,n,k);
            path.pop_back();
        }
    }
    vector<vector<int>> combine(int n, int k) {
        backtracking(1,n,k);
        return finalPath;
    }
};
posted @ 2025-03-25 14:29  Cheauncey  阅读(10)  评论(0)    收藏  举报