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

本文关键字:获取 数组 | 更新日期: 2023-09-27 18:31:35

我正在寻找从长度为 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}.....等等。

最好的方法是什么?马坦

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

您可以在数字数组中包含 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);
        }
    }
}
相关文章: