我该如何用java编写一个函数来生成所有的3*3多维数组,使得1...9之间的每个数字只出现一次?
谢谢!
发布于 2009-04-05 10:42:06
基本上,您正在寻找序列[1, 2, ... 9]的所有排列,但请注意,您将它们拆分为一个3x3矩阵。
很容易在数学上证明排列的数量是9! (阶乘9)。
有许多算法可以生成排列。选择你觉得最方便的。例如,at wikipedia。
发布于 2009-04-05 10:37:38
注意:根据OP,这实际上不是家庭作业。
你已经走了多远了?这听起来像是家庭作业,这很好,所以可能会有所帮助,但你应该向我们展示你做了多少。所以让我们看看你能做些什么,我们会帮助你的
发布于 2009-04-05 10:42:44
我会从小的开始,对于2*2的数组,你会怎么做?手动完成-即开始写下所有可能的2*2数组。你是怎么做到的?然后想一想如何在代码中做到这一点。如果你做的是2*2,你应该能够看到你的结果看起来很好,这样你就会知道你是否在正确的轨道上。
这基本上是一个排列问题,一旦你找出了小数字的问题,同样的解决方案应该可以扩展。
https://stackoverflow.com/questions/718707
复制相似问题