这是一个比编程更多的数学问题,但我认为这里的很多人都非常擅长数学!:)
我的问题是:假设一个9 x 9网格(81个单元格)必须包含数字1到9,每个正好9次,可以生成多少个不同的网格.数字的顺序无关紧要,例如第一行可以包含9个1等.这与数独有关,我们知道有效数独网格的数量是6.67×10 ^ 21,所以因为我的问题没有受到限制像Sudoku一样,必须在每行,每列和每个框中包含9个数字,然后答案应该大于6.67×10 ^ 21.
我的第一个想法是答案是81!然而,在进一步反思时,这假设每个细胞可能的81个数字是不同的,不同的数字.它们不是,每个单元有81个可能的数字,但只有9个可能的不同数字.
我的下一个想法是,第一行中的每个单元格可以是介于1和9之间的任何数字.如果第一行碰巧是全部相同的数字,比如全1,那么第二行中的每个单元格只能有8个可能性,2-9.如果这一直持续到最后一行,则可以通过9 ^ 2*8 ^ 2*7 ^ 2 .....*1 ^ 2来计算不同排列的数量.但是,如果每行不包含相同数字的9,则不起作用.
我学习这些东西已经有一段时间了,我想不出一种方法可以解决这个问题,我很感激任何人都可以提供帮助.
想象一下,取出81张空白纸条,每张纸上写一个1到9的数字(每个数字中有9个).将牌组洗牌,然后开始将牌照放在9x9网格上.
你将能够创造81!如果您认为每个单据都是唯一的,则会出现不同
但相反,你想要考虑所有的1是等价的.
对于任何特定配置,由于1都是等效的,所以重复该配置的次数是多少?答案是9 !,你可以通过写上1张来换算九张单的方式.
这样就可以将排列总数减少到81!/ 9!.(你除以无法区分的排列数.而不是9个!无法区分的排列,想象只有2个无法区分的排列.你可以将计数除以2,对吗?所以规则是,你除以无法区分的排列数.)
啊,但你也希望2是等价的,3是等等.通过相同的推理,减少了排列的数量
81!/(9!)^9
Run Code Online (Sandbox Code Playgroud)