具有给定数字的单个列表中数字的笛卡尔积 (C#)
Cartesian product of numbers in a single list with given number (C#)
我只想在 C# 中获取具有指定数字的单个列表中数字的笛卡尔积。在下面,我给出了一些实际我想要得到的例子:
List<int> numbers = new List<int>() { 0, 1, 2 };
应该有一个函数来获取给定数字 n 的所有笛卡尔积。
例如,n=2 那么输出应该是这样的:
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
对此有什么建议或示例吗?
只要您只想创建两个集合的笛卡尔积就可以使用 LINQ SelectMany
:
var n = 2;
var numbers = Enumerable.Range(0, n + 1);
var cartesianProduct = numbers.SelectMany(_ => numbers, (a, b) => Tuple.Create(a, b));
当枚举 cartesianProduct
时,它将完全按照您在问题中指定的方式生成 9 个元组。
如果您必须创建更高维度的笛卡尔积it is better to use recursion。
我只想在 C# 中获取具有指定数字的单个列表中数字的笛卡尔积。在下面,我给出了一些实际我想要得到的例子:
List<int> numbers = new List<int>() { 0, 1, 2 };
应该有一个函数来获取给定数字 n 的所有笛卡尔积。
例如,n=2 那么输出应该是这样的:
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
对此有什么建议或示例吗?
只要您只想创建两个集合的笛卡尔积就可以使用 LINQ SelectMany
:
var n = 2;
var numbers = Enumerable.Range(0, n + 1);
var cartesianProduct = numbers.SelectMany(_ => numbers, (a, b) => Tuple.Create(a, b));
当枚举 cartesianProduct
时,它将完全按照您在问题中指定的方式生成 9 个元组。
如果您必须创建更高维度的笛卡尔积it is better to use recursion。