从长度为k的数组中获取n上的所有组

时间:2016-01-24 11:14:00

标签: c# algorithm

我正在寻找从长度为k的int数组中获取长度为n的所有可能int数组的最佳方法,包括n-1项的选项为null。 例如,我有5个元素的数组(k = 5),我想要3(n = 3)的所有组合

int[] numbers = new int[5] {1, 2, 3, 4, 5};

和长度为3的可能子数组:

{1,null,null},{1,null,2},{1,2,null} .....等等。

最好的方法是什么? 马坦

1 个答案:

答案 0 :(得分:0)

您可以在数字数组中包含null。 此代码生成除{null,null,null}之外的所有可能的排列。

var numbers = new int?[]{null, 1, 2, 3, 4, 5};
var result = new List<int?[]>();

foreach (int? x in numbers)
{
    foreach (int? y in numbers)
    {
        foreach (int? z in numbers)
        {
            if (x == null && y == null && z == null)
                continue;

            result.Add(new int?[] { x, y, z });
            Console.WriteLine("x: {0} - y: {1} - z: {2}", x, y, z);
        }
    }
}
相关问题