Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

用HASH没判重过了,秀下HASH函数,同时弱问下,这题咋判重啊- -|||

Posted by masque at 2009-04-28 00:13:05 on Problem 2503
也不是啥新鲜的,RK法,PRIME取999983,刚好没有重复。。。(这函数的确比较NB。。。)
void getHash ( char a[] , int key ) {
	long long int sum = 0;
	int len = strlen ( a );
	for ( int i = 0;i < len;i++ ) {
		sum = ( sum * 26 + a[i] );
	}
	int k = sum % prime;
	if ( hash[k] == 0 ) {
		hash[k] = key;
		return ;
	}
}
写法就是这样

关键我有点想不通,如果想判重的时候,实在没想好怎么写,hash[k]=key,这里的key必然得取装了英文的数组的下标啊,那查询的时候查到一个hash[position]不等于0的话,它也没法判断是不是往下找。。。迷惑- -|||
麻烦用HASH做的童鞋发个代码到站内哈,谢谢:)

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator