源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#中实现任意List的全组合算法代码

  • 时间:2021-08-12 11:33 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中实现任意List的全组合算法代码
[u]复制代码[/u] 代码如下:
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;         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部