這比編程更像一個數學問題,但我認爲很多人在這裏都很擅長數學! :)數學問題:不同排列的數量
我的問題是:給定一個9×9的網格(81個單元格),它必須包含數字1到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比9,9,9,9,9,9,9,9,9,看到http://en.wikipedia.org/wiki/Multinomial_theorem#Number_of_unique_permutations_of_words – starblue 2010-03-25 06:18:24