最近学习, 总是找到一些面试题,在自己实现下.
这个最简单的就是递归求解. 不过,有一点小问题,如果打印所有的数对
递归思想是:
1.如果当前数包含在数对中,那么下一次递归就是 从剩下的数组中找所有和为某固定数- 当前数的所有数对
2. 如果当前数不包含在数对中,那么下一次递归就是 从剩下的数组中找所有和为某固定数的所有数对
至于,怎么包含数,可以用字符串传递
例如: C#
//寻找数组的子集之和为固定数
public static void Find(int[] array, int index, int sum, string status)
{
if (index > array.Length - 1)
{
return;
}
if (array[index] == sum)
{
status += " " + array[index];
Console.WriteLine(status);
}
Find(array, index + 1, sum - array[index], status + " " + array[index]);
Find(array, index + 1, sum, status);
}