亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

詳解C#的排列組合

2020-01-24 00:56:21
字體:
來源:轉載
供稿:網友

排列組合的概念

排列:從n個不同元素中取出m(m≤n)個元素,按照一定的順序排成一列,叫做從n個元素中取出m個元素的一個排列(Arrangement)。

組合:從m個不同的元素中,任取n(n≤m)個元素為一組,叫作從m個不同元素中取出n個元素的一個組合。

排列組合實現代碼

上一個項目做的一個水路的路徑規劃時,用到了排列的數據結構。求任意N個點里M個點的不同順序的組合個數。

這樣求最優路徑。下面貼一段不知道哪里找的排列組合的算法。

public class PermutationAndCombination<T> { /// <summary> /// 交換兩個變量 /// </summary> /// <param name="a">變量1</param> /// <param name="b">變量2</param> public static void Swap(ref T a, ref T b) { T temp = a; a = b; b = temp; } /// <summary> /// 遞歸算法求數組的組合(私有成員) /// </summary> /// <param name="list">返回的范型</param> /// <param name="t">所求數組</param> /// <param name="n">輔助變量</param> /// <param name="m">輔助變量</param> /// <param name="b">輔助數組</param> /// <param name="M">輔助變量M</param> private static void GetCombination(ref List<T[]> list, T[] t, int n, int m, int[] b, int M) { for (int i = n; i >= m; i--) { b[m - 1] = i - 1; if (m > 1) { GetCombination(ref list, t, i - 1, m - 1, b, M); } else { if (list == null) { list = new List<T[]>(); } T[] temp = new T[M]; for (int j = 0; j < b.Length; j++) { temp[j] = t[b[j]]; } list.Add(temp); } } } /// <summary> /// 遞歸算法求排列(私有成員) /// </summary> /// <param name="list">返回的列表</param> /// <param name="t">所求數組</param> /// <param name="startIndex">起始標號</param> /// <param name="endIndex">結束標號</param> private static void GetPermutation(ref List<T[]> list, T[] t, int startIndex, int endIndex) { if (startIndex == endIndex) { if (list == null) { list = new List<T[]>(); } T[] temp = new T[t.Length]; t.CopyTo(temp, 0); list.Add(temp); } else { for (int i = startIndex; i <= endIndex; i++) { Swap(ref t[startIndex], ref t[i]); GetPermutation(ref list, t, startIndex + 1, endIndex); Swap(ref t[startIndex], ref t[i]); } } } /// <summary> /// 求從起始標號到結束標號的排列,其余元素不變 /// </summary> /// <param name="t">所求數組</param> /// <param name="startIndex">起始標號</param> /// <param name="endIndex">結束標號</param> /// <returns>從起始標號到結束標號排列的范型</returns> public static List<T[]> GetPermutation(T[] t, int startIndex, int endIndex) { if (startIndex < 0 || endIndex > t.Length - 1) { return null; } List<T[]> list = new List<T[]>(); GetPermutation(ref list, t, startIndex, endIndex); return list; } /// <summary> /// 返回數組所有元素的全排列 /// </summary> /// <param name="t">所求數組</param> /// <returns>全排列的范型</returns> public static List<T[]> GetPermutation(T[] t) { return GetPermutation(t, 0, t.Length - 1); } /// <summary> /// 求數組中n個元素的排列 /// </summary> /// <param name="t">所求數組</param> /// <param name="n">元素個數</param> /// <returns>數組中n個元素的排列</returns> public static List<T[]> GetPermutation(T[] t, int n) { if (n > t.Length) { return null; } List<T[]> list = new List<T[]>(); List<T[]> c = GetCombination(t, n); for (int i = 0; i < c.Count; i++) { List<T[]> l = new List<T[]>(); GetPermutation(ref l, c[i], 0, n - 1); list.AddRange(l); } return list; } /// <summary> /// 求數組中n個元素的組合 /// </summary> /// <param name="t">所求數組</param> /// <param name="n">元素個數</param> /// <returns>數組中n個元素的組合的范型</returns> public static List<T[]> GetCombination(T[] t, int n) { if (t.Length < n) { return null; } int[] temp = new int[n]; List<T[]> list = new List<T[]>(); GetCombination(ref list, t, t.Length, n, temp, n); return list; } }

    求組合:求5個數里任意3個數的組合

 static void Main(string[] args) { int[] IntArr = new int[] { 1, 2, 3, 4, 5 }; //整型數組 List<int[]> ListCombination = PermutationAndCombination<int>.GetCombination(IntArr, 3); //求全部的3-3組合 foreach(int[] arr in ListCombination) { foreach(int item in arr) { Console.Write(item + " "); } Console.WriteLine(""); } Console.ReadKey(); }

求排列:5個數取3個的任意排列

 int[] IntArr = new int[] { 1, 2, 3, 4, 5 }; //整型數組 List<int[]> ListCombination = PermutationAndCombination<int>.GetPermutation(IntArr, 3); //求全部的5取3排列 foreach(int[] arr in ListCombination) { foreach(int item in arr) { Console.Write(item + " "); } Console.WriteLine(""); }

以上就是本文的全部內容,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩色婷婷| 国产精品www色诱视频| 国产精品一区专区欧美日韩| 欧美自拍大量在线观看| 亚洲精品视频在线观看视频| 色婷婷综合久久久久中文字幕1| 国产精品国产三级国产aⅴ9色| 91超碰caoporn97人人| 疯狂做受xxxx欧美肥白少妇| 亚洲美女在线视频| 久久视频免费观看| 亚洲精品国产精品乱码不99按摩| 日韩麻豆第一页| www.色综合| 国产精品www网站| 精品久久久久久中文字幕一区奶水| 亚洲欧美制服中文字幕| 国产精品亚洲激情| 久久的精品视频| 97精品视频在线| 欧美国产一区二区三区| 中文字幕日韩欧美在线视频| 欧美—级a级欧美特级ar全黄| 精品国产一区二区三区久久久| 日韩a**站在线观看| 日本高清久久天堂| 欧美国产日本高清在线| 中文字幕亚洲一区二区三区五十路| 精品无码久久久久久国产| 久久这里只有精品视频首页| 亚洲精品国产精品自产a区红杏吧| 亚洲男女自偷自拍图片另类| 2019中文字幕免费视频| 欧美激情一区二区三区高清视频| 久久久久久91| 伊人成人开心激情综合网| 亚洲人在线视频| 欧美日韩国产一中文字不卡| 亚洲激情小视频| 777777777亚洲妇女| 色吧影院999| 国产亚洲精品综合一区91| 色婷婷av一区二区三区在线观看| 日韩av电影手机在线| 国产精品久久久久久久9999| 久久精品国产亚洲7777| 欧美在线影院在线视频| 久久亚洲精品网站| 日韩福利伦理影院免费| 国产日本欧美一区二区三区| 久久精品国产电影| 亚洲成人av片在线观看| 91精品国产网站| 国产成人精品国内自产拍免费看| 疯狂做受xxxx欧美肥白少妇| 久久久久久久91| 日韩av网站大全| 国产精品久久在线观看| 九九热精品在线| 亚洲香蕉伊综合在人在线视看| 成人激情电影一区二区| 永久免费精品影视网站| 亚洲国产精品成人精品| 国产成人精品久久亚洲高清不卡| 欧美日韩国产综合新一区| 在线日韩第一页| 欧美一区第一页| 少妇高潮久久久久久潘金莲| 国模视频一区二区| 国产精品视频播放| 亚洲欧美日韩精品久久| 日韩毛片在线观看| 国产97色在线|日韩| 欧美亚洲日本黄色| 久久在线精品视频| 亚洲sss综合天堂久久| 久久人人爽人人爽人人片av高清| 国内免费精品永久在线视频| 日韩欧美大尺度| 亚洲欧美一区二区三区久久| 美日韩精品视频免费看| 日韩中文字幕网址| 97在线精品国自产拍中文| 亚洲精品久久久久| 久久久成人精品| 国产91精品久久久久| 成人免费激情视频| 国产一区二区三区毛片| 国产精品国产亚洲伊人久久| 日韩av在线播放资源| 精品福利一区二区| 亚洲摸下面视频| 色妞欧美日韩在线| 亚洲欧美在线磁力| 亚洲电影第1页| 亚洲欧洲日韩国产| 日韩精品中文字幕在线观看| www.欧美三级电影.com| 国产精品综合久久久| 欧美激情精品久久久久久| 日韩精品视频在线| 大胆人体色综合| 国产精品偷伦一区二区| 国产精品爽爽爽爽爽爽在线观看| 成人在线视频网站| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久久久久亚洲调教| 亚洲精品在线不卡| 日韩av片免费在线观看| 国产精品一区二区三区在线播放| 欧美大奶子在线| 亚洲国产婷婷香蕉久久久久久| 亚洲男人的天堂在线播放| 亚洲精品在线看| 国产玖玖精品视频| 日韩精品中文字幕有码专区| 久久在线观看视频| 欧美成人免费在线视频| 久久久久久国产精品三级玉女聊斋| 亚洲影院色无极综合| 日韩亚洲欧美中文在线| 精品成人av一区| 日韩精品极品在线观看| 欧美人与性动交| 精品偷拍一区二区三区在线看| 亚洲欧美日韩图片| 精品亚洲国产视频| 日韩av免费看网站| 亚洲理论电影网| 欧美人交a欧美精品| 中文字幕亚洲欧美一区二区三区| 国产精品综合久久久| 国产成人精品综合久久久| 国产精品久久久久久av福利软件| 久久久女人电视剧免费播放下载| 亚洲国产成人爱av在线播放| 日韩精品中文字幕在线播放| 在线观看亚洲视频| 国产日韩精品在线播放| 欧美在线欧美在线| 在线播放国产一区中文字幕剧情欧美| 韩国精品美女www爽爽爽视频| 国产在线观看精品一区二区三区| 91精品视频大全| 亚洲美女性生活视频| 在线观看欧美日韩国产| 日韩av免费观影| 久久天天躁狠狠躁夜夜av| 精品国产一区二区三区久久狼黑人| 久久影院资源网| 久久精品91久久香蕉加勒比| 青青草原成人在线视频| 亚洲免费中文字幕| 欧美性生活大片免费观看网址| 久久频这里精品99香蕉| 4388成人网| 精品一区二区三区四区| 精品国偷自产在线视频99| 韩国三级日本三级少妇99| 欧美激情一二区| 日韩欧美中文第一页| 668精品在线视频| 欧美色视频日本版| 国产成人一区三区|