asp.net C# 实现任意List的全组合算法代码

 代码如下 复制代码

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;
        }

    }
}

时间: 2024-10-26 08:01:54

asp.net C# 实现任意List的全组合算法代码的相关文章

php生成数组的使用示例 php全组合算法_php实例

复制代码 代码如下: <?php$arr = array(1,2,3,4,5);/*@ res  组装好的每一注的每个元素@ $a 临时数组@ $index 数组索引@ $arr 请求的数组@ $b 最后要的结果 */$a = array();$b = array();$total = 0;format($a,0,$arr);function format($res,$index,$arr){ global $total; global $b; $new_arr = $res; $n_arr =

算法 集合所有子集的全排列 全组合

问题描述 算法 集合所有子集的全排列 全组合 {1,2,3} 的所有排列组合方式 {1,2,3} {1,23} {12,3} {13,2} {123} 请大家给个想法 或者 算法实现 解决方案 全排列算法与全组合算法全排列算法与全组合算法全排列以及集合的子集 解决方案二: 最简单的是穷举法,近期我会在CSDN的博客里解答你这个问题:) 请关注 80后传播者的微博和博客 解决方案三: 从一位数循环到n位数,对任意i位数(1<=i<=n),穷举所有情况,最后就是组合 解决方案四: 第一步,做一个数

java-easyui中设置多选框,我选择任意一个都会全选,求大神解答一下,在线等

问题描述 easyui中设置多选框,我选择任意一个都会全选,求大神解答一下,在线等 easyui中设置多选框,我选择任意一个都会全选,求大神解答一下,在线等 解决方案 不可能.只有勾选标题的那个复选框才会选中所有的记录前面的复选框 解决方案二: 你把你的checkbox 做一个循环 判断是否有勾选 只要有勾选 就把其他的也设置上 解决方案三: 既然使用easyUI 为这些多选框添加相同的一个click处理就是 $("#checkbox1,checkbox2......").click(

求asp.net.mvc的讲解视频,越全越好,有的前辈请联系我,小弟感激不尽

问题描述 哪位前辈有asp.net.mvc的讲解视频,越全越好,请联系我,小弟感激不尽,拜谢 解决方案 解决方案二:只有一点基础的零碎资料,给你也没什么用,帮顶吧解决方案三:该回复于2014-12-06 19:49:29被版主删除解决方案四:在webcast上大量的视频呢,在百度上输入webcast就行呢,其他的你懂得呢参考网站:解决方案五:我这有mvc4的电子书,需要的话留个地址我发给你解决方案六:网上搜一下就很多了吧

javascritp checkbox全选反选代码

javascritp checkbox全选反选代码 //全选与反选 <script type="text/网页特效"> var checkflag = "false"; function check(field) {      if (checkflag == "false")      {            for (i = 0; i < field.length; i++)            {           

网页全屏显示代码

下面分享网页全屏显示代码,想做全屏显示效果的朋友可以参照下. 最常见的是使用window.open的方法,直接打开全屏网页: <script> <!-- function fullwin(){ window.open("bigpage.html","bfs","fullscreen,scrollbars") } //--> </script> <center> <form> <in

javascript实现checkbox全选的代码

  本文给大家分享的是js实现checkbox的全选的代码,在网页制作中很常用的js代码,供大家学习参考. 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 function checkall(checkNames){ var allBoxs = document.getElementsByName(checkNames); for(var i = 0 ;i<allBoxs.length;i++){ if(allBoxs[i].type == 'checkbox'){ if(al

android设置全屏壁纸代码

设置全屏壁纸代码: WallpaperManager instance = WallpaperManager.getInstance(mContext); WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); int d

在asp网站上添加了一个右侧悬浮客服代码,添加后网页上下段之间有个间隙,位置异常,请大家指点,谢谢!

问题描述 在asp网站上添加了一个右侧悬浮客服代码,添加后网页上下段之间有个间隙,位置异常,请大家指点,谢谢! 我在我们网站上添加了悬浮于右侧中部的客服代码,网站是asp代码制作的,该客服代码是由3个文件组成,分别是(1)ggimages文件夹,主要放置客服广告的图片;(2)ggjs文件夹,主要放置js文件,内放置一个top.js文件;(3)网站根目录下放置一个gg.asp的文件,是客服代码的主程序. 存在问题:我在index主页底部引用gg.asp文件,代码如下: <!--#include f