最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中實現(xiàn)任意List的全組合算法代碼

 更新時間:2013年05月26日 12:37:15   作者:  
這篇文章主要是介紹了.net C# 實現(xiàn)任意List的全組合算法實現(xiàn)代碼,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 算法
{
    class 全組合算法
    {
        [Flags]
        public enum PersonType
        {
            Audit = 1,
            Child = 2,
            Senior = 4
        }

        public static void Run(string[] args)
        {
            var lstSource = GetEnumList<PersonType>();
            var lstComb = FullCombination(lstSource);
            var lstResult = new List<PersonType>();
            lstComb.ForEach(item =>
            {
                lstResult.Add(item.Aggregate((result, source) => result | source));
            });
        }

        public static List<T> GetEnumList<T>()
        {
            var lst = new List<T>();
            foreach (T item in Enum.GetValues(typeof(T)))
            {
                lst.Add(item);
            }
            return lst;
        }

        //全組合算法
        public static List<List<T>> FullCombination<T>(List<T> lstSource)
        {
            var n = lstSource.Count;
            var max = 1 << n;
            var lstResult = new List<List<T>>();
            for (var i = 0; i < max; i++)
            {
                var lstTemp = new List<T>();
                for (var j = 0; j < n; j++)
                {
                    if ((i >> j & 1) > 0)
                    {
                        lstTemp.Add(lstSource[j]);
                    }
                }
                lstResult.Add(lstTemp);
            }
            lstResult.RemoveAt(0);
            return lstResult;
        }

    }
}

相關(guān)文章

最新評論

东辽县| 长汀县| 清涧县| 沾益县| 城市| 花莲市| 察哈| 丰镇市| 宁波市| 遂宁市| 澜沧| 滨海县| 武夷山市| 五指山市| 万年县| 乐至县| 施秉县| 龙陵县| 西充县| 重庆市| 临泽县| 兴义市| 石棉县| 师宗县| 内乡县| 安丘市| 乌拉特前旗| 宁化县| 金坛市| 华亭县| 咸宁市| 廊坊市| 南溪县| 松阳县| 和平区| 班戈县| 沛县| 冕宁县| 太康县| 柏乡县| 江口县|