回溯法代码框架

Posted JackGo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回溯法代码框架相关的知识,希望对你有一定的参考价值。

子集树:

void backtrack(int t){  
  if(t > n) output(x);  
  else{  
    for(int i = f(n,t); i <= g(n,t);i++){  
          x[t] = h(i);  
          if(constraint(t) && bound(t)) backtrack(t+1);  
     }  
  }  
} 

排列树:

void backtrack(int t){  
  if(t > n) output(x);  
  else{  
    for(int i = f(n,t); i <= g(n,t);i++){  
          swap(x[t],x[i]);  
          if(constraint(t) && bound(t)) backtrack(t+1);  
          swap(x[t],x[i]);   
    }  
  }  
}  

 

以上是关于回溯法代码框架的主要内容,如果未能解决你的问题,请参考以下文章

0-1背包问题的回溯法代码

面试常考算法题---回溯法(学习笔记)

拉丁矩阵问题 利用回溯法的C++实现方案

递归回溯-算法框架

0-1背包问题的回溯法中,剪枝用的上界函数问题

五大基本算法——回溯法