C#中實(shí)現(xiàn)任意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#生成指定范圍內(nèi)的不重復(fù)隨機(jī)數(shù)
- C#生成不重復(fù)隨機(jī)字符串類
- C#生成唯一不重復(fù)訂單號(hào)
- C#隨機(jī)生成不重復(fù)字符串的兩個(gè)不錯(cuò)方法
- C#不重復(fù)輸出一個(gè)數(shù)組中所有元素的方法
- C#實(shí)現(xiàn)在購(gòu)物車系統(tǒng)中生成不重復(fù)訂單號(hào)的方法
- c# 兩個(gè)數(shù)組比較,將重復(fù)部分去掉,返回不重復(fù)部分的實(shí)現(xiàn)
- C#實(shí)現(xiàn)排列組合算法完整實(shí)例
- C#查找字符串所有排列組合的方法
- C#實(shí)現(xiàn)組合排列的方法
- 詳解C#的排列組合
- C#實(shí)現(xiàn)生成所有不重復(fù)的組合功能示例
相關(guān)文章
C#解析char型指針?biāo)赶虻膬?nèi)容(實(shí)例解析)
在c++代碼中定義了一個(gè)功能函數(shù),這個(gè)功能函數(shù)會(huì)將計(jì)算的結(jié)果寫入一個(gè)字符串型的數(shù)組中output,然后c#會(huì)調(diào)用c++導(dǎo)出的dll中的接口函數(shù),然后獲取這個(gè)output并解析成string類型,本文通過(guò)實(shí)例解析C#?char型指針?biāo)赶虻膬?nèi)容,感興趣的朋友一起看看吧2024-03-03C# 構(gòu)造函數(shù)如何調(diào)用虛方法
這篇文章主要介紹了C# 構(gòu)造函數(shù)如何調(diào)用虛方法,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07C#?基于TCP?實(shí)現(xiàn)掃描指定ip端口的方式示例
本文主要介紹了C#基于TCP實(shí)現(xiàn)掃描指定ip端口的方式示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Unity?制作一個(gè)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
項(xiàng)目中經(jīng)常遇到分?jǐn)?shù)統(tǒng)計(jì)的需求,例如操作正確則計(jì)分,相反則不計(jì)分失去該項(xiàng)分?jǐn)?shù),為了應(yīng)對(duì)需求需要一個(gè)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)。本文主要介紹了通過(guò)Unity實(shí)現(xiàn)這樣的一個(gè)計(jì)分系統(tǒng),快來(lái)跟隨小編一起學(xué)習(xí)吧2021-12-12C# Onnx實(shí)現(xiàn)輕量實(shí)時(shí)的M-LSD直線檢測(cè)
這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合Onnx實(shí)現(xiàn)輕量實(shí)時(shí)的M-LSD直線檢測(cè),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11Unity實(shí)現(xiàn)簡(jiǎn)單場(chǎng)景分層移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡(jiǎn)單場(chǎng)景分層移動(dòng),分為前景、場(chǎng)景、背景等,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼
本文主要介紹了WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01