Guest User

Untitled

a guest
Apr 22nd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. //子集树
  2. void Backtrack(int t) { //t 表示当前是树的第t层,即对集合 S 中的第 t 个元素进行判断
  3. if (t > n)
  4. output(x); //大于S中总的元素个数 ,遍历完成
  5. else
  6. for (int i = 0; i < = l; i++) { // 两种可能 加入或者不加入到解集合
  7. x[t] = i;
  8. if (Constraint(t) && Bound(t)){ //满足约数条件
  9. Backtrack(t + 1); //对 t+1 层进行判断
  10. }
  11. }
  12. }
  13.  
  14.  
  15.  
  16. //排列树:
  17. void Backtrack(int t) { //t 表示集合 S 的第 t 个元素
  18. if (t > n)
  19. output(x);
  20. else
  21. for (int i = t; i <= n; i++) { //第t 个元素与其后面的所有元素进行交换位置
  22. swap(x[t], x[i]);
  23. if (constraint(t) && bound(t)){
  24. backtrack(t + 1);
  25. }
  26. swap(x[t], x[i]);
  27. }
  28. }
Add Comment
Please, Sign In to add comment