您的位置:首页 > 其它

poj 2503 Babelfish

2011-10-11 00:09 295 查看
本来想试试那个ELFHash算法的功力的,哪知道错了,还是我三行的hash好。。。
#include <iostream>#include <cstdio>#include <string.h>#include <map>using namespace std;map<int,char*> M;int ELFHash(const char * str){	int hash = 0;	while(*str) hash = hash*107%10000007 + *str++;	return hash;	//unsigned int hash = 0;	//unsigned int x    = 0;	//while (*str)	//{	//	hash = (hash << 4) + (*str++);	//	if ((x = hash & 0xF0000000L) != 0)	//	{	//		hash ^= (x >> 24);	//		hash &= ~x;	//	}	//}	//return (hash & 0x7FFFFFFF);}void getData(const char* buf){	char *fir,*sec;	int idx=0;	fir = (char *)malloc(11*sizeof(char));	sec = (char *)malloc(11*sizeof(char));	while((*(fir+idx++) = *buf++) != ' ');	*(fir+ --idx) = '\0';	idx = 0;	while( (*(sec+idx++) = *buf++ ) != '\0');	M[ELFHash(sec)] = fir;}int main(){	char buf[30];	while(gets(buf),*buf)		getData(buf);	while(gets(buf)){		int hash = ELFHash(buf);		if(M.find(hash) == M.end() )			printf("eh\n");		else printf("%s\n",M[hash]);	}	return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: