using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param k int整型 * @param n int整型 * @return int整型二维数组 */ public List<List<int>> combination (int k, int n) { // write code here List<List<int>> lslsN = new List<List<int>>(); List<int> lsN = new List<int>(); DG(k, n, ref lslsN, ref lsN, 0); return lslsN; } public static void DG(int k, int n, ref List<List<int>> lslsN, ref List<int> lsN, int nCurIndex) { // write code here int nMaxLen = n - (1 + k) * k / 2; for (int nIndex = nCurIndex + 1; nIndex <= k + nMaxLen; nIndex++) { List<int> lsNCpy = new List<int>(); lsNCpy.AddRange(lsN); lsNCpy.Add(nIndex); int nSum = 0; lsNCpy.ForEach(r => { nSum += r; }); if (nSum > n) break; if (nSum == n && lsNCpy.Count == k) { lslsN.Add(lsNCpy); break; } DG(k, n, ref lslsN, ref lsNCpy, nIndex); } } }