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;
}
}
}
相关推荐
-
C#组合函数的使用详解
如下所示: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{ class Class1 { static string[] str = { "A", "B", "C", "D", "E" }; static voi
-
C#查找字符串所有排列组合的方法
本文实例讲述了C#查找字符串所有排列组合的方法.分享给大家供大家参考.具体实现方法如下: // 1. remove first char // 2. find permutations of the rest of chars // 3. Attach the first char to each of those permutations. // 3.1 for each permutation, move firstChar in all indexes // to produce even
-
C#组合模式实例详解
本文实例讲述了C#组合模式.分享给大家供大家参考.具体如下: Company.cs如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public abstract class Company { protected string name; public Company(string name) { t
-
C#列表框、复选列表框、组合框的用法实例
本文实例讲述了C#列表框.复选列表框.组合框的用法.分享给大家供大家参考.具体分析如下: 功能实现效果如下图所示: 实现代码: 1.声明相关变量存储专业.课程设置及相关信息: 复制代码 代码如下: string gr, msg, xy; string[] spec, cour1, cour2, cour3, cour4, cour5; 2.在Form1类中自定义函数bool checkGR()检查学生信息: 复制代码 代码如下: private bool checkGR() { bool
-
C#实现图形位置组合转换的方法
本文实例讲述了C#实现图形位置组合转换的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace
-
c# 组合模式
结构图: 抽象对象: 复制代码 代码如下: abstract class Component { protected string name; public Component(string name) { this.name = name; } public abstract void Add(Component c); public abstract void Remove(Com
-
C#实现组合排列的方法
C#实现组合排列的方法 最近在做数据分析系统,里面涉及到组合排列的问题,查找了很多的资料,但是感觉很多资料都是比较零散的,达不到项目需求. 后来经过一段的时间的探索,终于实现了组合排列的功能.下面我就来简单说说吧. 需求描述: 要实现的功能就是字符或数字的组合排列.例如:ab 的所有组合为:ab,ba : ab的所有不重复排列为:ab. 其实这也是彩票中常说的直选和组选.效果图如下: 功能实现 这里就不多说了,直接贴上实现代码吧. 1.窗体界面 窗体
-
C# 设计模式系列教程-组合模式
1. 概述 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 2. 解决的问题 当希望忽略单个对象和组合对象的区别,统一使用组合结构中的所有对象(将这种"统一"性封装起来). 3. 组合模式中的角色 3.1 组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口. 3.2 叶子(Leaf):在组合中表示子节点对象,叶子节点不能有子节点. 3.3 合成部件(Composite):定义有枝
-
C#实现图形区域组合操作的方法
本文实例讲述了C#实现图形区域组合操作的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace advanced_drawing { public parti
-
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
-
浅谈c语言中一种典型的排列组合算法
c语言中的全排列算法和组合数算法在实际问题中应用非常之广,但算法有许许多多,而我个人认为方法不必记太多,最好只记熟一种即可,一招鲜亦可吃遍天 全排列: #include<stdio.h> void swap(int *p1,int *p2) { int t=*p1; *p1=*p2; *p2=t; } void permutation(int a[],int index,int size) { if(index==size) { for(int i=0;i<size;i++) print
-
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 =
-
如何用Java实现排列组合算法
需求 我们的数据表有多个维度,任意多个维度组合后进行 group by 可能会产生一些"奇妙"的反应,由于不确定怎么组合,就需要将所有的组合都列出来进行尝试. 抽象一下就是从一个集合中取出任意元素,形成唯一的组合.如[a,b,c]可组合为[a].[b].[c].[ab].[bc].[ac].[abc]. 要求如下: 组合内的元素数大于 0 小于等于 数组大小: 组合内不能有重复元素,如 [aab] 是不符合要求的组合: 组合内元素的位置随意,即 [ab] 和 [ba] 视为同一种组合:
-
算法之排列算法与组合算法详解
1. 前言 本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等. 2. 排列算法 常见的排列算法有: (A)字典序法 (B)递增进位制数法 (C)递减进位制数法 (D)邻位对换法 (E)递归法 介绍常用的两种: (1) 字典序法 对给定的字符集中的字符规定了一个先后关系,在此基础上按照顺序依次产生每个排列. [例]字符集{1,2,3},较小的数字较先,这样按字典序生成的全排列是:123,132,213,231,312,321. 生成给定全排列的下一个排列 所谓一个的
-
Java递归实现字符串全排列与全组合
排列组合算法用途广泛,需要掌握,为降低门槛,本文主要关注算法的逻辑和简易性,未重视算法效率. 结合网络书本上的实现和自己的需求,这里列有四个目标: 1. 所有元素的全排列: ab的全排列是ab, ba(顺序相关); 2. 所有元素的全组合: ab的全组合是a, b, ab(顺序无关); 3. 求n个元素中选取m个元素的组合方式有哪些: abc中选2个元素的组合是ab, ac, bc; 4. 求n个元素中选取m个元素的排列方式有哪些: abc中选2个元素的排列是ab, ba, ac, ca, bc
-
详解Python中pyautogui库的最全使用方法
在使用Python做脚本的话,有两个库可以使用,一个为PyUserInput库,另一个为pyautogui库.就本人而言,我更喜欢使用pyautogui库,该库功能多,使用便利.下面给大家介绍一下pyautogui库的使用方法.在cmd命令框中输入pip3 install pyautogui即可安装该库! 常用操作 我们在pyautogui库中常常使用的方法,如下: import pyautogui pyautogui.PAUSE = 1 # 调用在执行动作后暂停的秒数,只能在执行一些pyaut
-
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
因有一项目新闻发布系统,数据库内容字段中存储的是原图的路径(当然还有其他文字内容啦,内容里插图时,存的是图片路径),但前台想使用缩略图,琢磨1小时余,得到以下结果,可解决问题(取img标签会了,取别的标签任意属性自然也会了): 复制代码 代码如下: <?php /*正则取图片img标记中的任意属性*/ $word = '<p height="22" align="cenetr">111 22</p> <img src="
-
iOS中tableview实现编辑、全选及删除等功能的方法示例
前言 我们在日常开发过程中或多或少都会遇到tableview的各种功能,这里简单记录一下tableview的删除和全选删除功能,废话不多说先看一下效果图 既然拿到了需求,就应该想一下如何去实现了,对照上面图片的内容,应该如何实现呢? 看完上图之后发现用到的几个功能: 第一个:左滑删除 第二个:全选删除 左边滑动删除 实现几个代理方法后就可以了 -(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationBut
-
PHP 提取图片img标记中的任意属性的简单实例
复制代码 代码如下: <?php /* PHP正则提取图片img标记中的任意属性 */ $str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正则提取或更改图片img标记中的任意属性</center>'; //1.取整个图片代码preg_match('/<\
随机推荐
- Angularjs cookie 操作实例详解
- flex chrome浏览器调试出现空白的解决方法
- JavaScript使用function定义对象并调用的方法
- javascript制作loading动画效果 loading效果
- python安装mysql-python简明笔记(ubuntu环境)
- Python 多线程抓取图片效率对比
- 概率的问题:使用递归与多次试验模拟的分析
- js如何调用qq互联api实现第三方登录
- 原生js实现新闻列表展开/收起全文功能
- JavaScript统计网站访问次数的实现代码
- 凹陷文字 推荐
- jQuery层次选择器用法示例
- myEclipse配置jdk1.7教程
- java使用Hashtable过滤数组中重复值的方法
- pandas groupby 分组取每组的前几行记录方法
- CentOS 6.5平台实现快速部署FTP的方法
- Python中多个数组行合并及列合并的方法总结
- php自定义排序uasort函数示例【二维数组按指定键值排序】
- vue实现todolist基本功能以及数据存储功能实例详解
- java一个数据整理的方法代码实例