對於某些情況下的大j函數,下面的哈希函數返回負值。多項式哈希碼導致負數?
int hashing::hash(string a)
{
int i = 0;
int hvalue = 0;
int h =0 ;
while(a[i]!=NULL)
{
hvalue = hvalue + (int(a[i]))*pow(31,i);
i++;
}
h = hvalue%j;
return h;
}
這怎麼可能?我該如何糾正它?
在上面的代碼中,j是一個使用文件大小計算的質數。在字符串形式爲「s」的某些特定情況下出現負值。
我在做什麼錯?我該如何解決它?
使用此我沒有得到一個負值,但我得到的是最大的int值的錯誤。我怎麼解決? – user2648875
@ user2648875-你有沒有#include'? –
templatetypedef
是的。我不再得到一個負值,但我得到INT_MAX的值 – user2648875