当前位置:   article > 正文

dfs递归+回溯调用顺序(决策树)(重点体会回溯)_顺序决策树

顺序决策树
  1. public class match {
  2. public static void main(String[] args) {
  3. Solution666 s=new Solution666();
  4. int[] i=new int[]{1,2,3};
  5. s.permute(i);
  6. }
  7. }
  8. class Solution666 {
  9. private List<Integer> list=new ArrayList<>();
  10. private List<List<Integer>> res=new ArrayList<>();
  11. public List<List<Integer>> permute(int[] nums) {
  12. if(nums.length==0){
  13. return res;
  14. }
  15. dfs(nums,0);
  16. return res;
  17. }
  18. public void dfs(int[] nums, int depth) {
  19. if(depth==nums.length){
  20. System.out.println(new ArrayList<>(list));
  21. res.add(new ArrayList<>(list));//一定要使用new
  22. return;
  23. }
  24. for(int i:nums){
  25. //剪枝
  26. /*if(list.contains(i)){
  27. continue;
  28. }*/
  29. list.add(i);
  30. dfs(nums,depth+1);
  31. //回溯到上一步撤销选择
  32. list.remove(depth);
  33. }
  34. }
  35. }

 决策树

 

111执行完会到递归最后执行的先执行撤销选择,再执行for里面第二层循环

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/590474
推荐阅读
相关标签
  

闽ICP备14008679号