最近在編碼競爭中,我遇到了這個問題。瓷磚的兩兩匹配
我們有1000塊瓷磚,其中每塊瓷磚是3x3矩陣。 矩陣中的每個單元格都具有從0到9的整數值,這表示單元格的高程 。問題是要找到最合適的瓷磚對,例如 。瓦片可以旋轉以適應,通過配合 在它意味着對於瓦片A和瓦片乙
A [1] + B [i]於=常數對於i = 0至8
我認爲這個問題的方法是我可以維護一個對應於每個tile的散列值。然後我會發現可能的拼貼組合可能是 ,並在散列表中查找它。
Ex。對於低於
5 3 2 4 6 7 5 7 8
4 8 9 matches with 5 1 0 for const = 9 & with 6 2 1 for const=10
1 4 5 8 5 4 9 6 5
瓦片該圖塊的「const的」將範圍從9(添加0到最大元素)至10(9添加到最小元素)。 因此,我會得到兩個可能的組合瓷磚,我會在表中查找。
但是這種方法是貪婪的,並沒有給出所需的答案,我也無法想到一個適當的散列函數,它將考慮所有可能的旋轉。
那麼如何解決這個問題是一個好方法?
我確信有一種蠻力的方式來解決這個問題,但我實際上想知道在「成對等於k」問題的線上是否存在可行的問題解決方案。
是否有一個小問題,只檢查所有可能的對?如果沒有,爲什麼不使用它呢? – kraskevich