首页 > 代码库 > 回溯法代码框架

回溯法代码框架

子集树:

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]);   
    }  
  }  
}  

 

回溯法代码框架