题目大意:对应的输入多行,每行两个字符串,两个字符串互相映射。接下来询问的时候,如果这个字符串出现过,输出其对应的字符串。
分析:二重哈希来判断字符串是否存在,输出其对应的字符串就行。二重哈希的入门题,字符串还挺有意思的。
代码:
#include<iostream> #include<string> #include<map> #include<string> using namespace std; typedef unsigned long long ull; map<pair<int,int>,string> dict; const int s1=133,s2=233; const int maxn=1e5+7; char s[1000],t[1000]; int hash1(char* s){ int ans=0; for(int i=0;s[i];i++) ans=(ans*s1+s[i])%maxn; return ans; } int hash2(char* s){ int ans=0; for(int i=0;s[i];i++) ans=(ans*s2+s[i])%maxn; return ans; } void read(){ int cnt=0; while(scanf("%s",s)&&s[0]!='@'){ getchar(); cnt=0; while((t[cnt]=getchar())!=' ') cnt++; t[cnt]='