class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
Comb(list, "");
Console.Read();
}
/// <summary>
/// 8个数,分成四组,每两个为一组,有多少种分法?
/// (整体思路就是第一个数不动,从第二个数开始依次和第一个数组合,
/// 剩下的6个数再组成一个List,进行递归,一直到只剩下两个数就把结果输出)
/// </summary>
/// <param name="list"></param>
/// <param name="str"></param>
public static void Comb(List<int> list, string str)
{
for (int i = 1; i < list.Count; i++)
{
string curStr = list[0] + "" + list[i] + " ";
if (list.Count > 2)
{
List<int> sublist = new List<int>();
sublist.AddRange(list);
sublist.RemoveAt(i);
sublist.RemoveAt(0);
Comb(sublist, str + curStr);
}
else
{
Console.WriteLine(str + curStr);
}
}
}
}