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);
}
}
}
}
}
}
本文提供了一道中兴公司面试编程题的解决方案,题目要求输入两个整数n和m,找出所有从1到n中选取若干数相加等于m的组合,并用C#代码实现。
4140





