查找

0

鑑於矩陣團數:查找

  • 行數
  • 列數
  • 最大值矩陣可以採取

兩個矩陣被認爲是相等,如果一個能夠獲得從另一個交換行和列。相同的矩陣可以組合在一起。如何查找這些組的數量?

+0

矩陣沒有明顯的順序,那麼「最大值矩陣可以採取」是什麼意思?你的意思是矩陣元素絕對值的最大允許值?它們是什麼類型的元素:正整數,整數,有理數,實數,複數,其他?你想要的代碼可以找到這些組的數量或者只是數字嗎?最重要的是,你在這個問題上迄今爲止做了哪些工作?請顯示您的嘗試代碼 - 這是本網站的全部內容。檢查[FAQ](http://stackoverflow.com/tour)和[如何提問](http://stackoverflow.com/help/how-to-ask)。 –

回答

1

這是一個典型的polya theorem問題。你應該首先從維基百科學習它和相關的概念,如排列,循環和組。

說行數是N,列數是M,最大值矩陣可以取V.是(N + M)!組中的排列和我們可以使用的V顏色。

簡單的解決方案將列舉所有可能的行排列和列置換。那麼c(g)可以通過c(行的置換)* c(列的置換)來計算。這是一個O((N + M)!)算法。

先進的解決方案需要一些技巧。您可以計算具有完全c_row循環的行的排列數,其中1 < = c_row < = N,列的類似。然後您可以枚舉所有(c_row,c_column)對,並彙總結果。這將是一個正確實現的O(N^2 + M^2 + NM)算法。

在這兩種情況下,您都需要在java中使用BigInteger等類,因爲答案會非常大。

如果我有更多的時間,你確實需要一些代碼來演示,我會在稍後寫一個。

+0

請不要爲這個問題編寫代碼,這是嚴重陳述,並沒有表現出任何努力。如果OP改善了這個問題,那麼只有這樣你的代碼纔會適用。當OP沒有指出適當的修正時,請不要編輯和「修正」問題。 –

+0

@RoryDaulton感謝您的建議。可以肯定的是,OP沒有以最清楚的方式提出這個問題。然而,這樣的描述實際上足以理解OP想要問的東西,而「更正」是一個旨在由OP審查的版本建議。 –