打赏

应用场景:诸文件夹中视频合并,每个文件夹中取一个,找所有可用的组合。

网上找遍,未得所需,写其算法。

模型:以List<List<string>>模拟,代码如下:

        static void Main(string[] args)
        {
            string s = string.Empty;
            List<List<string>> lists = new List<List<string>>();
            var l1 = new List<string>() { "1", "2", "3", "4" };
            var l2 = new List<string>() { "5", "6" };
            var l3 = new List<string>() { "7", "8", "9", "0" };
            var l4 = new List<string>() { "a", "b", "c"};
            lists.Add(l1);
            lists.Add(l2);
            lists.Add(l3);
            lists.Add(l4);

            int lc = 1;
            foreach (var list in lists)
                lc *= list.Count;
            for (int i = 0; i <= lc - 1; i++)
            {
                s = string.Empty;
                for (int j = 0; j <= lists.Count - 1; j++)
                {
                    var list = lists[j];
                    int multi = 1;
                    for (int k = j + 1; k <= lists.Count - 1; k++)
                        multi *= lists[k].Count;
                    int index = (i / multi) % list.Count;
                    s += list[index] + ",";
                }
                Console.Write(s.Trim(',') + "    ");
                if ((i + 1) % 8 == 0)
                    Console.Write("\r\n");
            }

            Console.ReadLine();
        }

输出如下:

 

所得满足需求。贴之,聊作备忘~

posted on 2022-07-09 19:18  楚人无衣  阅读(276)  评论(0编辑  收藏  举报