首页 > 其他 > 详细

递归遍历全排列个人见解

时间:2014-03-05 20:24:43      阅读:551      评论:0      收藏:0      [点我收藏+]

针对递归有两种模式。

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

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

1.

bubuko.com,布布扣

 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     }

 

 
bubuko.com,布布扣

递归遍历全排列个人见解,布布扣,bubuko.com

递归遍历全排列个人见解

原文:http://www.cnblogs.com/friends-wf/p/3583178.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!