ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HDU 1880 魔咒词典

2021-11-11 18:04:21  阅读:142  来源: 互联网

标签:HDU cur int 魔咒 哈利 ans include 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有