2010年中兴面试题编程
求解:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
using System;
using System.Collections.Generic;
namespace ConsoleApp
{
class RunClass
{
static void Main()
{
new RunClass().Print(100, 13);
Console.ReadLine();
}
public void Print(int n, int m, List<int> list = null)
{
if (n < 1 || m < 1)
{
return;
}
for (int i = 1; i <= n; i++)
{
if (i < m)
{
List<int> childList = new List<int>();
if (list != null)
{
childList.AddRange(list);
}
childList.Add(i);
Print(i - 1, m - i, childList);
}
else if (i == m)
{
if (list != null)
{
foreach (int j in list)
{
Console.Write("{0} + ", j);
}
Console.WriteLine("{0}", m);
}
}
}
}
}
}