39分8组,取1-15之间的数值,不重复
C 39 8 = 3种
C 39 6 =139 种
C 39 4 = 47 种
private static void C2(int sum, int k, int current, string str, List<string> result)
{
if (sum >= 0)
{
if (k == 1)
{
if (sum >= 1 && sum <= 15 && current - 1 < sum && current <= 15)
result.Add(str + " " + sum);
}
else
{
for (int i = current; i <= 15; i++)
{
C2(sum - i, k - 1, i + 1, str + " " + i, result);
}
}
}
}
public static List<string> C(int sum, int k, int current)
{
List<string> result = new List<string>();
C2(sum, k, current, "", result);
return result;
}
" 1 2 3 4 5 6 7 11"
" 1 2 3 4 5 6 8 10"
" 1 2 3 4 5 7 8 9"
原文:https://www.cnblogs.com/icemaker/p/13354112.html