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

Re:求测试数据

Posted by ailing at 2012-04-26 16:03:37 on Problem 2503
In Reply To:Re:求测试数据 Posted by:sths at 2012-04-25 21:33:03
> 发下代码。。我帮你看看。。
我使用链地址法写的HASH,不知道为什么WA,麻烦你了哈。。。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 100100
#define mod  9983

typedef struct HASH
{
	char f[12],e[12];
	struct HASH *next;
	HASH()
	{
		next=NULL;
	}
}hashtable;
hashtable *Hash[max];

void insert(char *s1,char *s2)
{
	int key=0,i;
	for(i=0;*s2;i++)
		key+=*(s2++)*i;
	key%=mod;
	if(!Hash[key])
	{
		hashtable* pn=new hashtable;
		strcpy(pn->e,s1);
		strcpy(pn->f,s2);
		Hash[key]=pn;
	}
	else 
	{
		hashtable* pn=Hash[key];
		while(pn->next)
			pn=pn->next;
		hashtable *temp=new hashtable;
		strcpy(temp->e,s1);
		strcpy(temp->f,s2);
		pn->next=temp;
	}

}
void find(char *s1)
{
	int key=0,i;
	for(i=0;*s1;i++)
		key+=*(s1++)*i;
	key%=mod;
	if(!Hash[key])
	{
		printf("eh\n");
		return ;
	}
	else 
	{
		hashtable *temp=Hash[key];
		while(temp)
		{
			if(!strcmp(temp->f,s1))
			{
				printf("%s\n",temp->e);return ;
			}
			temp=temp->next;
		}
	}
}
int main()
{
	//freopen("in.txt","r",stdin);
	char s1[12],s2[12];
	memset(Hash,0,sizeof(Hash));

	while(scanf("%c",&s1[0]),s1[0]!='\n')
	{
	    scanf("%s%s",s1+1,s2);	
		insert(s1,s2);
		getchar();
	}
	while(scanf("%s",s1)==1)
	{
		find(s1);
		//getchar();
	}
	return 0;
}

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