欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#通过yield实现数组全排列的方法

程序员文章站 2023-12-05 22:27:46
本文实例讲述了c#通过yield实现数组全排列的方法。分享给大家供大家参考。具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同...

本文实例讲述了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#程序设计有所帮助。