请注意,这 not 又是一个“如何生成所有排列”的问题,这里有很多问题。我已经看了很多,但我的具体问题不再进一步。
给定一个整数
n
,我想生成一个 List<int[]>
的 int[n*n]
其中每个列表包含从 1 到 n
的整数的唯一排列。
所以如果
n
是2,我想看到16个数组,如下...
[1,1,1,1],
[1,1,1,2],
[1,1,1,3],
[1,1,1,4],
[1,1,2,1],
[1,1,2,2],
...etc
[4,4,4,1],
[4,4,4,2],
[4,4,4,3],
[4,4,4,4],
对于这种特定情况,可以通过以下方式实现...
Enumerable.Range(1, 2)
.SelectMany(n1 => Enumerable.Range(1, 2)
.SelectMany(n2 => Enumerable.Range(1, 2)
.SelectMany(n3 => Enumerable.Range(1, 2)
.Select(n4 => new[] { n1, n2, n3, n4 }))))
.ToList()
但是,除了笨拙之外,这是针对数字 2 的硬编码。如果我想对 3 做同样的事情,我需要有 9
SelectMany
行,依此类推。我想要一个灵活的解决方案,适用于传入的任何数字。
我见过的所有其他问题只需要 1 到
n
的所有排列,即 n
数组的集合,每个数组的长度为 n
。我的情况需要n*n
数组,每个数组的长度为n*n
.
有人能帮忙吗?谢谢