当前位置: 移动技术网 > IT编程>开发语言>c# > C#通过yield实现数组全排列的方法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网