深度优先搜索算法测试

package org.com.lin.test;

import java.util.*;

/**
 * 
 * 深度优先搜索算法测试
 * 解决最大路径问题
 * @author linfenliang
 * @version 1.00 2011/12/23
 */

public class DFS_test {
    /**
     * 存放深度优先搜索的结果集
     */
    private static List<List<String>> listCollection;
    
    /**
     * 
     * 概述:深度优先搜索(回溯法求幂集)
     * @Title: DFS_set
     * @param i 初始设为0
     * @param list 需要遍历的集合
     * @param tempList 临时实例化的集合
     * void
     * @user <a href=mailto:linfenliang@126.com>linfenliang</a>
     */
    public static void DFS_set(int i, List<String> list, List<String> tempList) {

        if (listCollection == null) {
            listCollection = new ArrayList<List<String>>();
        }
        if (i > list.size() - 1) {
            listCollection.add(new ArrayList<String>(tempList));
        } else {
            tempList.add(list.get(i));      //左翼结果集填入临时集合
            DFS_set(i + 1, list, tempList); // 递归深入搜索
            tempList.remove(list.get(i));   //递归返回出来后去掉新增的结果
            DFS_set(i + 1, list, tempList); //继续递归深入同层次目录
        }
        
    }
    
    /**
     * @param args
     *            
     */
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("C");
        list.add("D");
        list.add("E");
        list.add("F");
        list.add("G");
        DFS_set(0, list, new ArrayList<String>());
        System.out.println("结果集的大小(子集个数):2^"+list.size()+"===>"+listCollection.size());
        for (List<String> lt: listCollection) {
            // Collections.sort(lt);
            // Collections.reverse(lt);
            for (String str : lt) {
                System.out.print(str + "   ");
            }
            System.out.println();
        }
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值