我有一個2×N個(2-列和n行)二維陣列,其中該值將是在1至60(僅整數)的範圍內。爲了清楚起見,我需要找出如下所述的行的頻率。如何找到在2×N個二維數組元素的頻率用C
輸入數組
0-> 9,11
1-> 9,10
2-> 2,10
3-> 9,11
4-> 9,11
(9,11) - > 3次
(9,10) - > 1時
(2,10) - > 1時間
我有一個2×N個(2-列和n行)二維陣列,其中該值將是在1至60(僅整數)的範圍內。爲了清楚起見,我需要找出如下所述的行的頻率。如何找到在2×N個二維數組元素的頻率用C
0-> 9,11
1-> 9,10
2-> 2,10
3-> 9,11
4-> 9,11
(9,11) - > 3次
(9,10) - > 1時
(2,10) - > 1時間
合併兩個值在每一行到單個標識符,並且只計數每個標識符(即,直方圖)的發生。例如,如果c1
和c2
是在兩列中的值,並1 <= c1
,c1 <= 60
,1 <= c2
,c2 <= 60
,那麼你可以使用
k = (c1 - 1) * 60 + (c2 - 1)
得到0 <= k
,k < 3600
。這意味着每行只有3600個不同的唯一組合值。因此,創建一個這樣大小的數組,併爲每行增加k
th條目。
要輸出的數量,只是遍歷所有可能k
指出,
c1 = (k/60) + 1
c2 = (k % 60) + 1
在一般情況下,如果你有一個整數從imin
到imax
,包容,你可以收拾他們到一個更大的整數使用
base = imax - imin + 1
packed = (i1 - imin) + base * ((i2 - imin) + base * ((i3 - imin) + ...))
,並使用解壓
i1 = imin + (packed % base)
i2 = imin + ((packed/base) % base)
i3 = imin + ((packed/(base * base)) % base)
等等。 0 <= packed
,所以你可以使用一個無符號整數類型packed
。
的類型必須是大到足以容納課程的包裝價值。如果有三個值,那麼packed < base * base * base
。
SO不是代碼寫入服務。 – InternetAussie
編寫一個例程以確定元組是否相同。 – BLUEPIXY
贊[this](http://ideone.com/RD9WcJ) – BLUEPIXY