子集法

void search(int t) {     //t 表示当前在第t层,即对集合 S 中的第 t 个元素进行判断
  if (t > n){    //大于S中总的元素个数 ,遍历完成 
    处理解
      返回
    }
  for (int i = 0; i < = 1; i++) {     
    to[t]=i;// 两种可能 加入(1)或者不加入(0)到解集合  
    search(t + 1);           //对 t+1 层进行判断    
  }
}

排列法

void search(int t) {     //t 表示集合 S 的第 t 个元素 
  if (t > n){
    处理解
    返回
  }   
  for(当前这层可行的选择){  
    状态变化
    search(t+1)
    回溯
  }
}