I wrote two generic class to implement these two algorithms, so you can use these classes to generate permutations and combinations for some use, such as software testing.
Using the Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace CombinationAlgorithmic
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
class Program
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
static void Main(string[] args)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ShowCombinations<int>(new int[]
{ 1, 2, 3, 4, 5 }, 3);
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ShowPermutations<string>(new string[]
{ "dog", "cat", "bird", "bat" }, 4);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
static void ShowPermutations<T>(T[] array, int length)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Permutations<T> permutations = new Permutations<T>(array, length);
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Console.WriteLine("{0} Permutations of Array \"
{1}\":\n", permutations.Count, GetString<T>(array));
foreach (IList<T> perm in permutations)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Console.WriteLine(GetString<T>(perm) + "\n");
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
static void ShowCombinations<T>(T[] array, int length)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Combinations<T> combinations = new Combinations<T>(array, length);
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Console.WriteLine("{0} Combinations of Array \"
{1}\":\n", combinations.Count, GetString<T>(array));
foreach (IList<T> oneCom in combinations)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Console.WriteLine(GetString<T>(oneCom) + "\n");
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
static string GetString<T>(IList<T> list)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
StringBuilder sb = new StringBuilder();
foreach (T item in list)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
sb.Append(item.ToString() + ",");
}
sb.Remove(sb.Length-1, 1);
return sb.ToString();
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
output:
10 Combinations of Array "1,2,3,4,5":
1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5
2,3,4
2,3,5
2,4,5
3,4,5
24 Permutations of Array "dog,cat,bird,bat":
dog,cat,bird,bat
dog,cat,bat,bird
dog,bird,cat,bat
dog,bat,cat,bird
dog,bird,bat,cat
dog,bat,bird,cat
cat,dog,bird,bat
cat,dog,bat,bird
bird,dog,cat,bat
bat,dog,cat,bird
bird,dog,bat,cat
bat,dog,bird,cat
cat,bird,dog,bat
cat,bat,dog,bird
bird,cat,dog,bat
bat,cat,dog,bird
bird,bat,dog,cat
bat,bird,dog,cat
cat,bird,bat,dog
cat,bat,bird,dog
bird,cat,bat,dog
bat,cat,bird,dog
bird,bat,cat,dog
bat,bird,cat,dog
Download the Source Project:
https://files.cnblogs.com/Dah/PermutationCombination.rarNote: If you find any bug or have some suggestion, please send E-Mail to me or leave your comments here, thanks!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步