C#通過yield實(shí)現(xiàn)數(shù)組全排列的方法
本文實(shí)例講述了C#通過yield實(shí)現(xiàn)數(shù)組全排列的方法。分享給大家供大家參考。具體分析如下:
從n個(gè)不同元素中任取m(m≤n)個(gè)元素,按照一定的順序排列起來,叫做從n個(gè)不同元素中取出m個(gè)元素的一個(gè)排列。當(dāng)m=n時(shí)所有的排列情況叫全排列。
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#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#強(qiáng)制轉(zhuǎn)換和嘗試轉(zhuǎn)換的方法
這篇文章主要為大家詳細(xì)介紹了C#強(qiáng)制轉(zhuǎn)換和嘗試轉(zhuǎn)換的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
C#基于FTP協(xié)議的簡易軟件自動(dòng)升級程序
這篇文章主要為大家詳細(xì)介紹了C#基于FTP協(xié)議的簡易軟件自動(dòng)升級程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
如何在datatable中使用groupby進(jìn)行分組統(tǒng)計(jì)
如何在datatable中進(jìn)行分組,并且計(jì)算分組后每組的數(shù)量,考慮了一下,可以使用LINQ來實(shí)現(xiàn)datatable分組,需要的朋友可以參考下2015-08-08
c# Newtonsoft.Json 常用方法總結(jié)
這篇文章主要介紹了c# Newtonsoft.Json 常用方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02
C#實(shí)現(xiàn)Post數(shù)據(jù)或文件到指定的服務(wù)器進(jìn)行接收
這篇文章主要為大家詳細(xì)介紹了如何通過C#實(shí)現(xiàn)Post數(shù)據(jù)或文件到指定的服務(wù)器進(jìn)行接收,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2024-03-03

