HDU 1880 魔咒词典
作者:互联网
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
#include<string>
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
int get_hash(char a[])
{
int ans=0;
for(int i=0;a[i]!='\0';i++)
{
ans=ans*131+a[i];
}
return ans;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,c,f,len,i,j,t;
char a[300],cur[110],fun[110];
map<int,string> dic;
while(gets(a)&&a[0]!='@')
{
len=strlen(a);
for(i=1;a[i]!=']';i++)
{
cur[i-1]=a[i];
}
cur[i-1]=0;
c=get_hash(cur);
i+=2;
for(j=i;j<len;j++)
{
fun[j-i]=a[j];
}
fun[j-i]=0;
f=get_hash(fun);
dic[c]=fun;
dic[f]=cur;
}
scanf("%d",&n);
gets(a);
while(n--)
{
gets(a);
len=strlen(a);
if(a[0]=='[')
{
a[len-1]=0;
t=get_hash(a+1);
}
else
{
a[len]=0;
t=get_hash(a);
}
if(dic.count(t))
{
cout<<dic[t]<<endl;
}
else
{
cout<<"what?"<<endl;
}
}
return 0;
}
标签:HDU,cur,int,魔咒,哈利,ans,include,1880 来源: https://blog.csdn.net/qq_61908339/article/details/121272986