日期:2014-05-20  浏览次数:20572 次

求个算法,这要怎么做
求各位给个算法,这要如何去做(不要for嵌套)

问题是这样:现有五个左右的list集合,每个集合的大小不确定有可能size为0,现想得到把每个集合里的数据进行排列组合后的数据。

如图:



现在得到

 ADG
 ADH
 ADI
 AEG
 AEH
 AEI
 ......

肯请各位请教下要如何去做?
算法 行业数据 排列组合

------解决方案--------------------
递归
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Hello {
    private static List<String> result = new ArrayList<String>();

    public static void foo(List<List<String>> lists, int outerIndex) {
        if (result.size() == lists.size()) {
            System.out.println(result);
        }

        for (int oi = outerIndex; oi < lists.size(); ++oi) {
            List<String> temp = lists.get(oi);

            for (int ii =  0; ii < temp.size(); ++ii) {
                result.add(temp.get(ii));
                foo(lists, oi + 1);
                result.remove(result.size() - 1);
            }
        }
    }

    public static void main(String[] args) {
        // [[[1]]] 准备数据.
        List<String> l1 = new ArrayList<String>();