日期:2014-05-17  浏览次数:20812 次

请教一下这个算法,该怎么写
一个List<List<int>>集合:

 List<List<int>> list_初始值 = new List<List<int>>() 
        { 
            new List<int>(){0,2,3},
            new List<int>(){1,7,4},
            new List<int>(){2,9,4},
        };

要求每个List<int>元素都提取一个元素进行组合,要按照"list_初始值"中元素顺序组合。要求得到一个List<List<int>>结果,最后的结果是这样的:

{0,1,2},{0,1,9},{0,1,4},{0,7,2},{0,7,9},{0,7,4},{0,4,2},{0,4,9},{0,4,4},
{2,1,2},{2,1,9},{2,1,4},{2,7,2},{2,7,9},{2,7,4},{2,4,2},{2,4,9},{3,4,4},
{3,1,2},{3,1,9},{3,1,4},{3,7,2},{3,7,9},{3,7,4},{3,4,2},{3,4,9},{3,4,4}

当然,最后的结果中,元素的顺序是不要求的,只是每个元素里面的小的元素必须要求顺序
请问,这个算法该怎么写啊?谢谢!!

------解决方案--------------------
就按你这个顺序吗?

var query = from t1 in list_初始值[0]
            from t2 in list_初始值[1]
            from t3 in list_初始值[2]
            select new
            {
                a = t1,
                b = t2,
                c = t3
            };

query.ToList().ForEach(x => { Console.WriteLine(x); });

------解决方案--------------------
 List<List<String>> list0 = new List<List<String>>() 
        { 
            new List<String>(){"0","2","3"},
            new List<String>(){"1","7","4"},
            new List<String>(){"2","9","4"},
        };

         var array1 = list0.Aggregate((m, n) => m.SelectMany(t1 => n.Select(t2 => t1 + t2).ToL