从长度为 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}.....等等。
最好的方法是什么?马坦
您可以在数字数组中包含 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);
}
}
}