C#通过yield实现数组全排列的方法
2015-03-24 10:23
1351 查看
本文实例讲述了C#通过yield实现数组全排列的方法。分享给大家供大家参考。具体分析如下:
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
static void Swap<T>(ref T a, ref T b) { T t = a; a = b; b = t; } static IEnumerable<int[]> Perm(int[] arr, int pos) { if (pos == arr.Length) { yield return arr; } for (int i = pos; i < arr.Length; ++i) { Swap(ref arr[i], ref arr[pos]); foreach (var j in Perm(arr, pos + 1)) yield return j; Swap(ref arr[i], ref arr[pos]); } } static void Main(string[] args) { foreach (var i in Perm(new int[] { 1, 2, 3, 4 }, 0)) { Console.WriteLine(string.Join(",",i.Select(j=>j.ToString()).ToArray())); } }
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- python通过yield实现数组全排列的方法
- JAVA通过反映方法实现C#的委托
- 通过委托实现方法数组来代替switch分支语句
- C#使用yield关键字让自定义集合实现foreach遍历的方法
- C#通过线程实现回调方法
- C#通过WebClient/HttpWebRequest实现http的post/get方法
- C#:通过递归和非递归算法实现按顺序输出的全排列
- 采用扩展方法实现数组中数据类型转换(c#)
- php通过数组实现多条件查询实现方法(字符串分割)
- python常规方法实现数组的全排列
- 网络判断网络连接有多种办法,通过C#程序也可以判断与远程主机的连接状态。具体实现方法
- C# 通过接口IEnumerator让自己编写的对象/类,实现foreach遍历方法
- C#实现通过模板自动创建Word文档的方法
- SQL 中传数组参数的变通方法:通过字符串分拆实现
- 数组全排列的递归方法实现
- C#通过WebClient/HttpWebRequest实现http的post/get方法
- C#中通过画线实现CODE39条码的生成方法
- c# Yield return之简单方法实现迭代器和集合初始化器
- 对象间通信方法之一:通过委托实现(C#语言)
- C#实现通过winmm.dll控制声音播放的方法