using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hydro.CommonBase { public class Combine { public static List Get_combine_list(int totalNum, int selectNum) { _combine_list = new List(); int[] cs = new int[selectNum]; for (int i = 0; i < selectNum; i++) cs[i] = i; _combine_list.Add((int[])cs.Clone()); Get_combine_inc(totalNum, selectNum, cs, selectNum-1); return _combine_list; } static List _combine_list; /// /// /// /// 组合的集合 /// 所有元素的数量 /// 选取元素的数量 /// 当前的枚举状态 /// /// private static void Get_combine_inc( int totalNum, int selectNum, int[] cs, int k) { if(cs[k]< totalNum-1) { cs[k] += 1; for (int i = k + 1; i < selectNum; i++) cs[i] = cs[i - 1] + 1; if (k < selectNum - 1) k = selectNum - 1; _combine_list.Add((int[])cs.Clone()); Get_combine_inc(totalNum,selectNum,cs,k); } else if (k>0) { Get_combine_inc(totalNum, selectNum, cs, k-1); } else { return; } } } }