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);
}
}
}
}
}
}
本文提供了一道2010年中兴面试编程题的解决方案,题目要求从1到n的整数序列中找出所有可能的组合,使得这些组合的元素之和等于给定的整数m。通过递归方法实现,代码使用C#语言编写。

被折叠的 条评论
为什么被折叠?



