| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哦~还是TLEIn Reply To:Re:手头没有VC,我用这个马甲边改边交的...不保证改的没错误 Posted by:ykt at 2005-08-31 16:17:35 #include<stdio.h>
#include<string.h>
#include <iostream>
using namespace std;
/*
* Macro
*/
#define MAX_WORD_NUM 100000
#define MAX_WORD_LENGTH 10+1
#define PRIME_NUM 13
/*
* declaration of structure
*/
typedef struct HashTable_struct{
char value[MAX_WORD_LENGTH];
char key[MAX_WORD_LENGTH];
}HashTable;
/*
* declaration of functions
*/
/*
* global variables
*/
HashTable hashTable[MAX_WORD_NUM];
/*
* definition of functions
*/
/*hash the string*/
int evalKey(char *p){
int key=0;
while(*p){
key+=(*p++)*PRIME_NUM;
key=key%MAX_WORD_NUM;
}
return key;
}
/*insert the key-value pair into the hash table*/
void insertTable(char *key,char *value){
int keyNum=evalKey(key);
while(hashTable[keyNum].key[0]!='\0'){
keyNum++;
keyNum=keyNum%MAX_WORD_NUM;
}
strcpy(hashTable[keyNum].key,key);
strcpy(hashTable[keyNum].value,value);
}
/*given a key, find the position of this key , return -1 if not found*/
int findValue(char *key){
int keyNum=evalKey(key);
while(hashTable[keyNum].key[0]!='\0'){
if(strcmp(hashTable[keyNum].key,key)==0)
return keyNum;
keyNum++;
keyNum=keyNum%MAX_WORD_NUM;
}
return -1;
}
void main()
{
//freopen("test.txt","r",stdin);
char english[MAX_WORD_LENGTH],dialect[MAX_WORD_LENGTH],line[MAX_WORD_LENGTH*2+1],c;
int index;
while(1){
scanf("%s",&english);
c=getchar();
if(c!=' ')
break;
scanf("%s",&dialect);
insertTable(dialect,english);
}
while(1){
index=findValue(english);
if(index>=0)
printf("%s\n",hashTable[index].value);
else
printf("eh\n");
if(scanf("%s",&english)==EOF)
break;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator