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

 更新时间:2015年03月24日 10:23:01   作者:八大山人  
这篇文章主要介绍了C#通过yield实现数组全排列的方法,以实例形式较为详细的分析了全排列的概念及C#的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

相关文章

  • winform模拟鼠标按键的具体实现

    winform模拟鼠标按键的具体实现

    这篇文章介绍了winform模拟鼠标按键的具体实现,有需要的朋友可以参考一下
    2013-10-10
  • C#中对字符串进行压缩和解压的实现

    C#中对字符串进行压缩和解压的实现

    本文主要介绍了C#中对字符串进行压缩和解压的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • C# 元组和值元组的具体使用

    C# 元组和值元组的具体使用

    这篇文章主要介绍了C# 元组和值元组的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C#中GridView动态添加列的实现方法

    C#中GridView动态添加列的实现方法

    这篇文章主要介绍了C#中GridView动态添加列的实现方法,涉及C#中GridView的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C#连接mysql数据库完整实例

    C#连接mysql数据库完整实例

    这篇文章主要介绍了C#连接mysql数据库的方法,以一个完整实例形式分析了C#操作mysql数据库连接的基本技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • 详解StackExchange.Redis通用封装类分享

    详解StackExchange.Redis通用封装类分享

    这篇文章主要介绍了详解StackExchange.Redis通用封装类分享 ,详细的介绍了StackExchange.Redis通用封装,具有一定的参考价值,有需要的可以了解一下。
    2016-12-12
  • WPF实现类似360安全卫士界面的程序源码分享

    WPF实现类似360安全卫士界面的程序源码分享

    最近在网上看到了新版的360安全卫士,感觉界面还不错,于是用WPF制作了一个,时间有限,一些具体的控件没有制作,用图片代替了。感兴趣的朋友一起跟着小编学习WPF实现类似360安全卫士界面的程序源码分享
    2015-09-09
  • 深入解析C#中的async和await关键字

    深入解析C#中的async和await关键字

    C#语言中的async和await关键字使得编写异步代码变得更加简洁和易读,本文将深入解析C#中的async和await,帮助您更好地理解它们的工作原理和用法,,需要的朋友可以参考下
    2024-05-05
  • C#实现两个窗体之间数值传送的方法

    C#实现两个窗体之间数值传送的方法

    这篇文章主要介绍了C#实现两个窗体之间数值传送的方法,涉及C#中WinForm窗体数值传递的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • 深入浅出23种设计模式

    深入浅出23种设计模式

    本文给大家详解23种设计模式,理解设计模式有助于在程序开发过程中灵活应用,需要的朋友可以参考下
    2015-08-08

最新评论