给定数(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个元组,与您在问题中指定的完全相同。

如果必须创建更高维度的笛卡尔乘积,最好使用递归。

相关内容

  • 没有找到相关文章

最新更新