我正在尋找一個將兩個(正數)整數映射爲一個新整數的函數,該整數可以反轉爲原始組合。 之前已詢問過該問題,例如Mapping two integers to one, in a unique and deterministic way。區別在於其中一個整數被綁定到一個非常小的上限,例如50.另一個整數是未綁定的。將兩個整數映射到一個(使用上限)
我試圖解決的是,我有1-50數組1 - 最大整數(但主要是< 10.000.000)。
array1 {1,2,3,4,5,6,7..N)
array2 {1,2,3,4,5,6,7..N)
array50 {1,2,3,4,5,6,7..N)
現在我想建立一個單一的新的數組,其結合了這N個陣列的單個新的數組,其中每個數字是可逆式到原始數組。所以我想過創建對,一個指向數組的數字和一個指向數組中的實際數字。
如果我使用像Cantor Pairing Function這樣的默認功能,我可以非常快地獲得大量數字,並且我正在儘可能減少這些數字。 這將是最好的,如果最大的部分將適合在一個Int32而不是一長。我認爲這應該是可能的,因爲我的一對數字中有一個數字是50,但我無法弄清楚。
只有在兩者都有界的情況下才能做到這一點,因爲'int'是有界的 – harold
*「我得到的數字非常快」* - 比['BigInteger']大(https://msdn.microsoft.com /en-us/library/system.numerics.biginteger(v=vs.110).aspx)? – Sinatr
例如,如果一個部分從1到max int,則只能添加1個額外位。 – harold