zoukankan      html  css  js  c++  java
  • 递归遍历全排列个人见解

    针对递归有两种模式。

    1.针对原数据进行修改。

    2.每次都new出数据放入递归。

    1.

    
    
     1     private static boolean visited[]=new boolean[num];
     2     private static void DFS(List<String> str,String out,int count) {
     3     //    if(visited[0]==true&&visited[1]==true&&visited[2]==true&&visited[3]==true)
     4         if(count==num)                      //判断条件
     5             System.out.println(out);
     6         for(int i=0;i<str.size();i++)
     7         {
     8             if(false==visited[i])
     9             {
    10                 visited[i]=true;                //标记当前已访问
    11                 count++;            
    12                 DFS(str,out+str.get(i),count);
    13                 count--;                     
    14                 visited[i]=false;                //恢复状态
    15 } 16 } 17 }
    
    

    2

     1     private static void DFS(List<String> str,String out,int count) {
     2     //    if(visited[0]==true&&visited[1]==true&&visited[2]==true&&visited[3]==true)
     3         if(count==num)
     4             System.out.println(out);
     5         for(int i=0;i<str.size();i++)
     6         {
     7             if(false==visited[i])
     8             {
     9                 LinkedList linkedlist=new LinkedList(str);          //进入DFS之前创建新元素
    10                 count++;
    11                 DFS(linkedlist,out+linkedlist.remove(i),count);        //每次进去之前把当前的删去
    12                 count--;
    13             }
    14         }
    15     }
     
  • 相关阅读:
    小程序 新建项目底部tabbar
    HBuild 连接安卓手机
    jquery tab切换
    VUE 项目运行
    VUE 创建element项目
    VUE环境搭建、创建项目、vue调试工具
    HBuild 连接苹果手机
    javascript五种基本类型
    SASS 简单实用
    redis基础02-redis的5种对象数据类型
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3583178.html
Copyright © 2011-2022 走看看