亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

.net C# 實現任意List的笛卡爾乘積算法代碼

2020-01-24 03:15:53
字體:
來源:轉載
供稿:網友
可以擴展到多個集合的情況。類似的例子有,如果A表示某學校學生的集合,B表示該學校所有課程的集合,則A與B的笛卡爾積表示所有可能的選課情況

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace 算法
{
    public static class 算法
    {
        /// <summary>
        /// 笛卡爾乘積
        /// </summary>
        public static List<List<T>> CartesianProduct<T>(this List<List<T>> lstSplit)
        {
            int count = 1;
            lstSplit.ForEach(item => count *= item.Count);
            //count = lstSplit.Aggregate(1, (result, next) => result * next.Count);

            var lstResult = new List<List<T>>();

            for (int i = 0; i < count; ++i)
            {
                var lstTemp = new List<T>();
                int j = 1;
                lstSplit.ForEach(item =>
                {
                    j *= item.Count;
                    lstTemp.Add(item[(i / (count / j)) % item.Count]);
                });
                lstResult.Add(lstTemp);
            }
            return lstResult;
        }
    }

    class Program
    {
        public static void Main()
        {
            StringDemo();
            根據Sector生成Routing的Demo();
            根據Sector生成Routing的Demo2();
        }

        /// <summary>
        /// 簡單字符串 笛卡爾乘積
        /// </summary>
        private static void StringDemo()
        {
            var lstSource = new List<List<string>>
            {
                new List<string>() { "A","B","C"},
                new List<string>() { "D","E","F"},
                new List<string>() { "G","H","I"},
            };

            var sw = new Stopwatch();
            sw.Start();
            var lstResult = lstSource.CartesianProduct();
            Console.WriteLine(sw.Elapsed);
        }


        private static void 根據Sector生成Routing的Demo()
        {
            //默認允許輸入多個BookingClass,表示使用任意一個都可以。
            var lstSectorDef = new List<Sector>
            {
                new Sector{ SeqNO=1, BookingClass="A/A1/A2"},
                new Sector{ SeqNO=2, BookingClass="B/B1/B2"},
                new Sector{ SeqNO=3, BookingClass="C/C1/C2"},
                //.....數量不定
            };


            var sw = new Stopwatch();
            sw.Start();

            var lstSectorGroup = new List<List<Sector>>();
            lstSectorDef.ForEach(item =>
            {
                var lstSector = new List<Sector>();
                foreach (var bookingClass in item.BookingClass.Split('/'))
                {
                    var sector = item.Clone();
                    sector.BookingClass = bookingClass;

                    lstSector.Add(sector);
                }
                lstSectorGroup.Add(lstSector);
            });

            var lstRouting = lstSectorGroup.CartesianProduct();

            Console.WriteLine(sw.Elapsed);
        }


        private static void 根據Sector生成Routing的Demo2()
        {
            //默認允許輸入多個BookingClass,表示使用任意一個都可以。
            var lstSectorDef = new List<Sector>
            {
                new Sector{ SeqNO=1, BookingClass="A1/A2/A3"},
                new Sector{ SeqNO=2, BookingClass="B1/B2/B3"},
                new Sector{ SeqNO=3, BookingClass="C1/C2/C3"},
                //.....數量不定
            };

            var sw = new Stopwatch();
            sw.Start();

            var lstTemp = new List<List<string>>();
            lstSectorDef.ForEach(item =>
            {
                lstTemp.Add(item.BookingClass.Split('/').ToList());
            });

            var lstBookingClassGroup = lstTemp.CartesianProduct();

            var lstRouting = new List<List<Sector>>();
            for (int i = 0; i < lstBookingClassGroup.Count; i++)
            {
                var lstSector = new List<Sector>();
                for (int j = 0; j < lstSectorDef.Count; j++)
                {
                    var sector = lstSectorDef[j].Clone();
                    sector.BookingClass = lstBookingClassGroup[i][j];
                    lstSector.Add(sector);
                }
                lstRouting.Add(lstSector);
            }

            Console.WriteLine(sw.Elapsed);
        }

 

    }

    [DebuggerDisplay("Sector:SeqNO={SeqNO},BookingClass={BookingClass}")]
    public class Sector
    {
        public int SeqNO { get; set; }
        public string BookingClass { get; set; }

        public Sector Clone()
        {
            return this.MemberwiseClone() as Sector;
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久电影| 日韩av网站大全| 国产欧美日韩免费| 国产精品视频白浆免费视频| 91av在线播放视频| 久久精品99久久香蕉国产色戒| 日韩精品福利在线| 日韩毛片中文字幕| 精品国产一区久久久| 91黑丝在线观看| 在线观看欧美成人| 日本亚洲欧美三级| 欧美成人免费播放| 国产精品久久久久久av| 777777777亚洲妇女| 色噜噜国产精品视频一区二区| 亚洲精品资源美女情侣酒店| 亚洲人成自拍网站| 国产精品精品国产| 日韩亚洲国产中文字幕| 韩日精品中文字幕| 亚洲一区二区在线播放| 欧美国产日韩xxxxx| 精品国产拍在线观看| 国内精品久久久久影院 日本资源| 日韩资源在线观看| 亚洲欧美日韩直播| 国产精品自产拍在线观看中文| 97香蕉超级碰碰久久免费的优势| 亚洲欧洲日产国产网站| 日韩高清电影好看的电视剧电影| 国产精品手机播放| 一本色道久久88精品综合| 91高清免费视频| 日韩视频免费在线观看| 亚洲成人精品久久| 国产成人一区二区| 欧美在线观看网址综合| 亚洲精品v天堂中文字幕| 91视频国产精品| 高跟丝袜一区二区三区| 免费不卡在线观看av| 亚洲国产精品久久久| 久久人人爽人人爽人人片av高请| 国产成人+综合亚洲+天堂| 亚洲视频在线看| 日韩欧美在线中文字幕| 日韩影视在线观看| 91精品国产91久久久久久久久| 午夜精品一区二区三区在线| 欧美日韩精品在线观看| 国产ts人妖一区二区三区| 精品视频在线播放| 国产精品吊钟奶在线| 欧美日本中文字幕| 成人国产精品日本在线| 国产一区二区三区丝袜| 国产精品扒开腿爽爽爽视频| 欧美成人亚洲成人日韩成人| 成人性教育视频在线观看| 日韩av电影国产| 亚洲视频999| 亚洲毛片在线观看.| 成人h片在线播放免费网站| 亚洲成人aaa| 亚洲欧美三级在线| 欧美日韩在线观看视频小说| 国产91精品高潮白浆喷水| 亚洲自拍偷拍色图| 亚洲国产成人久久综合| 日韩在线观看免费全集电视剧网站| 亚洲老头老太hd| 91精品国产乱码久久久久久蜜臀| 日韩不卡在线观看| 亚洲美女喷白浆| 欧美激情亚洲激情| 奇米成人av国产一区二区三区| 国产精品国产三级国产aⅴ9色| 亚洲欧美中文日韩在线v日本| 2019中文字幕在线观看| 亚洲高清福利视频| 北条麻妃一区二区三区中文字幕| 欧美猛交ⅹxxx乱大交视频| 九色成人免费视频| 亚洲性生活视频在线观看| 国产精品国产三级国产专播精品人| 国产精品久久久久不卡| 国产精品久久久久久久久久久久久久| 欧美成人免费全部观看天天性色| 日本午夜精品理论片a级appf发布| 欧美成人午夜激情视频| 亚洲综合第一页| 国产午夜精品免费一区二区三区| 国产一区二中文字幕在线看| 久久久精品久久久| 亚洲自拍偷拍色片视频| 精品亚洲夜色av98在线观看| 日韩欧美亚洲范冰冰与中字| 国产不卡av在线免费观看| 久久色在线播放| 中文字幕日韩在线播放| 久久中文字幕视频| 亚洲精品国产欧美| 2018中文字幕一区二区三区| 国产精品一区久久| 欧美激情一区二区三区成人| 欧美性xxxx18| 色播久久人人爽人人爽人人片视av| 欧美野外wwwxxx| 正在播放欧美一区| 国产一区二区美女视频| 欧美一级大胆视频| 国外色69视频在线观看| 韩国国内大量揄拍精品视频| 亚洲女人初尝黑人巨大| 亚洲综合最新在线| 国产91对白在线播放| 国产一区二区三区中文| 一区二区在线免费视频| 国产综合香蕉五月婷在线| 在线日韩中文字幕| 欧美成人免费观看| 国产中文字幕亚洲| 欧美激情二区三区| 欧美与欧洲交xxxx免费观看| 欧美壮男野外gaytube| 久久久久久久久久av| 国产精品丝袜久久久久久高清| 夜夜嗨av一区二区三区四区| 欧美日韩国产黄| 538国产精品一区二区免费视频| 亚洲欧美日韩另类| 精品视频一区在线视频| 久久久亚洲影院你懂的| 欧美黄色性视频| 久久久噜噜噜久久中文字免| 久久久久国产精品免费网站| 亚洲人成网站色ww在线| 亚洲第一精品夜夜躁人人躁| 大量国产精品视频| 亚洲视频视频在线| 福利二区91精品bt7086| 永久免费看mv网站入口亚洲| 中文字幕日本精品| 亚洲最大福利视频网站| 国模视频一区二区三区| 日韩中文字幕免费视频| 欧美三级xxx| 久久久精品中文字幕| 欧美福利视频在线观看| 亚洲欧洲日产国码av系列天堂| 国产精品久久久久久久久久三级| 亚洲2020天天堂在线观看| 欧美精品性视频| 人九九综合九九宗合| 午夜精品久久久久久99热| 成人夜晚看av| 国产精品久久久久久久久久东京| 亚洲综合社区网| 亚洲精品视频免费在线观看| 日韩高清不卡av| 亚洲色图25p| wwwwwwww亚洲| 日韩av大片免费看|