hdoj 1496 Equations (HASH)

題目大意:方程 a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 

       a,b,c,d的範圍爲[-50,50] ,     x1,x2,x3,x4的範圍爲[-100,100].

       現給出a,b,c,d,求x1,x2,x3,x4的解的個數.

 

思路:先求a*x1^2+b*x2^2 所有的值,保存於哈希表中。再查找-(c*x3^2+d*x4^2)是否保存於哈希表中。

 

問題是解決哈希表中的衝突

 

 

 線性探測再散列技術

  即:當 h(k)位置已經存儲有元素的時候,依次探查 (h(k)+i) mod S, i=1,2,3,直到找到空的存儲單元爲止。其中, S爲 數組長度

  特別地,如果將數組掃描一圈仍未發現空單元,則說明哈希表已滿,這會帶來麻煩,但是,該情況完全可以通過擴大數組範圍來避免。 

 

看了別人的代碼自己重新寫了一遍,46ms。學習了。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章