c# C(m,n) 排列组合算法

来源:互联网 发布:tomcat下js文件未生效 编辑:程序博客网 时间:2024/05/21 15:48

n从1到m的所有组合:

static void Main(){    string[] arr = new string[] { "a", "b", "c", "d", "e" };    List<string[]> list = new List<string[]>();    foreach (string s in arr)    {        List<string[]> lst = list.GetRange(0, list.Count);        string[] nArr = { s };        list.Add(nArr);        foreach (string[] ss in lst)        {            list.Add(ss.Concat(nArr).ToArray());        }    }    List<string[]> outList = list.OrderByDescending(p => p.Length).ToList();    outList.ForEach(p => Console.WriteLine(string.Join(",", p)));}


n以内的所有组合:

static void Main(){    string[] arr = new string[] { "a", "b", "c", "d", "e" };    int n = 2;//长度为2以内的所有组合    List<string[]> list = new List<string[]>();    foreach (string s in arr)    {        List<string[]> lst = list.Where(p => p.Length < n).ToList();        string[] nArr = { s };        list.Add(nArr);        foreach (string[] ss in lst)        {            list.Add(ss.Concat(nArr).ToArray());        }    }    List<string[]> outList = list.OrderByDescending(p => p.Length).ToList();    outList.ForEach(p => Console.WriteLine(string.Join(",", p)));}



0 0
原创粉丝点击