我将如何在 java 中编写一个函数来生成所有 3*3 多维数组,以使 1...9 之间的每个数字只出现一次?
谢谢!
基本上,您正在寻找 series 的所有排列[1, 2, ... 9]
,但请注意您将它们拆分为3x3
.
很容易在数学上证明排列的数量是9!
(阶乘 9)。
有许多算法可以生成排列。选择您认为最方便的一种。例如,在 wikipedia 上。
注意:根据 OP,这实际上不是作业。
你走了多远?这听起来像家庭作业,这很好,所以可能会有所帮助,但你应该向我们展示你做了多少。SO 是关于培养更好的程序员,所以向我们展示你能做什么,我们会提供帮助
我会从小处着手,您将如何处理 2*2 阵列?手动进行 - 即开始写下所有可能的 2*2 数组。你怎么做呢?然后想想如何在代码中做到这一点。如果您以 2*2 的方式执行此操作,您应该能够通过肉眼看到您的结果是否看起来不错,这样您就会知道您是否走在正确的轨道上。
这基本上是一个排列问题,一旦你弄清楚了小数字,相同的解决方案应该可以扩展。