当前位置: 首页 > 编程笔记 >

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

左丘弘致
2023-03-14
本文向大家介绍C#通过yield实现数组全排列的方法,包括了C#通过yield实现数组全排列的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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常规方法实现数组的全排列,包括了python常规方法实现数组的全排列的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了常规方法实现python数组的全排列操作。分享给大家供大家参考。具体分析如下: 全排列解释:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 调用方法: 希

  • 本文向大家介绍python标准算法实现数组全排列的方法,包括了python标准算法实现数组全排列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网站。分享给大家供大家参考。具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

  • 本文向大家介绍C#通过链表实现队列的方法,包括了C#通过链表实现队列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过链表实现队列的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍C#通过IComparable实现ListT.sort()排序,包括了C#通过IComparable实现ListT.sort()排序的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过IComparable实现ListT.sort()排序的方法,分享给大家供大家参考之用。具体方法如下: 通常来说,List<T>.sort()可以实现对T的排序,比如List<int>.so

  • 本文向大家介绍JavaScript实现数字数组正序排列的方法,包括了JavaScript实现数字数组正序排列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现数字数组正序排列的方法。分享给大家供大家参考。具体如下: JS数组的sort方法支持一个函数作为参数,下面的代码演示了JS数组如何实现数字的正序排列 上面的代码输出结果如下 1,5,10,25,40,100

  • 本文向大家介绍C语言实现的排列组合问题的通用算法、解决方法,包括了C语言实现的排列组合问题的通用算法、解决方法的使用技巧和注意事项,需要的朋友参考一下 尽管排列组合是生活中经常遇到的问题,可在程序设计时,不深入思考或者经验不足都让人无从下手。由于排列组合问题总是先取组合再排列,并且单纯的排列问题相对简单,所以本文仅对组合问题的实现进行详细讨论。以在n个数中选取m(0<m<=n)个数为例,问题可分解