这更像是一个数学问题而不是编程,但我认为这里的很多人都非常擅长数学!:)
我的问题是:给定一个 9 x 9 网格(81 个单元格),每个网格必须包含数字 1 到 9 恰好 9 次,可以生成多少个不同的网格。数字的顺序无关紧要,例如第一行可能包含九个 1 等。这与数独有关,我们知道有效数独网格的数量是 6.67×10^21,所以因为我的问题不受限制就像数独一样,必须在每一行、每一列和每一框中都有 9 个数字,那么答案应该大于 6.67×10^21。
我的第一个想法是答案是 81!然而,进一步思考,这假设每个单元格可能的 81 个数字是不同的、不同的数字。它们不是,每个单元格有 81 个可能的数字,但只有 9 个可能的不同数字。
我的下一个想法是,第一行中的每个单元格都可以是 1 到 9 之间的任何数字。如果碰巧第一行恰好都是相同的数字,比如说全 1,那么第二行中的每个单元格只能有 8 种可能性,2-9。如果这一直持续到最后一行,则可以通过 9^2 * 8^2 * 7^2 ..... * 1^2 计算不同排列的数量。但是,如果每行不包含 9 个相同的数字,这将不起作用。
自从我研究这些东西以来已经有一段时间了,我想不出办法来解决它,我将不胜感激任何人可以提供的帮助。