int hash(const char* S)
{
int V = 0;
for (; *S != 0; S++) V = (V * P + (unsigned char)*S) % N;
return V;
}
其中P,N为较大素数
{
int V = 0;
for (; *S != 0; S++) V = (V * P + (unsigned char)*S) % N;
return V;
}
其中P,N为较大素数
解决方案 »
- Socket客户端接收服务端发来的数据 的事件怎么写?不想用循环,那样性能不好。
- VS2008开发Windows Mobile 问题
- 急,贴一小段代码,忘高人指点迷津(新手,实在是分不多了)
- 加号实现快捷弹画面 (Shortcut.?),在线等,谢谢
- 如果把手动生成的datatable链接到水晶报表里打印出来?
- 只启动一个窗口
- 谁是高手进来看看
- c#多线程的同步和异步可以举例说下吗?
- 用InstallShield LE发布的安装包无法打开
- 我的vs.net不能运行程序(f5),一运行vs就死掉,大家知道怎么解决吗?
- asp.net下有没有比较看看的好用得下拉菜单控件,免费的给推荐一下谢谢
- 求救 数据库连接问题
{
int V = 0;
byte[] bytes = System.Text.Encoding.Default.GetBytes(S);
foreach(byte b in bytes) V = (V * P + b ) % N;
return V;
}VC 的char 相当于C# 的 byte 8 位,一字节
这里用 System.Text.Encoding.Default.GetBytes(S) 是用windows系统进行转换
如果有其他需求自己改
int hash(string S)
{
int V = 0;
for( int i = 0; i < S.Length; i++ )
{
V = (V * P + (int)( S[i] ) ) % N;
}
return V;
}