首页 > 代码库 > 魔咒词典------HDOJ杭电1880(字符串的处理,很简单)
魔咒词典------HDOJ杭电1880(字符串的处理,很简单)
Problem Description
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
Input
首先列出词典中不超过100000条不同的魔咒词条,每条格式为:
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以“@END@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(<=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以“@END@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(<=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
Output
每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果魔咒不在词典中,就输出“what?”
Sample Input
[expelliarmus] the disarming charm [rictusempra] send a jet of silver light to hit the enemy [tarantallegra] control the movement of one‘s legs [serpensortia] shoot a snake out of the end of one‘s wand [lumos] light the wand [obliviate] the memory charm [expecto patronum] send a Patronus to the dementors [accio] the summoning charm @END@ 4 [lumos] the summoning charm [arha] take me to the sky
Sample Output
light the wand accio what? what?
大半夜的竟然失眠了!!!!!!为毛啊!!!!!!
O(∩_∩)O哈哈~,今天是520诶!!!
卧槽,520管我屌丝毛事啊!!!!!!
哦,对了,今天题解还没写!!!!!!
卧槽,现在凌晨一点半啊!!!!!!
算了,快速水一题!!!!!!
这题主要是读取第二个魔咒的内容第一个会是空格,注意下这一点!!!!!!
如果对字符串输入还有读取有问题的童鞋,建议自己敲一下代码,然后总结,这东西我总结给你是没用的,你看了一遍觉得自己会了,其实,你会个P啊!!!!!!那是我会的,不是!你!!!!!!代码这种东西还是要靠自己去实践,积累经验,总结,然后运用实践,如此反复,世有实践,后有神牛!!!!!!
就像今天听到一个好消息!!!!!!我们计算机专业的学长被南加州大学计算机专业录取了,关键人家托福没过线!!!!!!人家之所以录取的原因就是他在ACM基地积累的丰富的编程经验,够炫吧!!!!!!
ono!!!!!!
讲偏了!!!!!!
上代码!!!!!!对字符串输入输出读取有疑问的小伙伴一定要自己去实践一下,一定一定一定一定啊啊啊啊啊啊!!!!!!
还有记得总结啊!!!!!!
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; char liu[100000][26],xp[100000][88]; char ac[86]; int main() { int i,j,k; int t,n,m; k=0; int flag; for(i=0;;i++) { for(j=0;;j++) { scanf("%c",&liu[i][j]); if(liu[i][j]==‘]‘) break; if(liu[i][0]==‘@‘&&liu[i][4]==‘@‘) break; //这里一定要输完这一句,不能第一个字母输完判断是@就break,会RE的!你break了人家还是要输完的啊!!!!!!切记! } if(liu[i][0]==‘@‘) break; getchar(); gets(xp[i]); k++; } cin>>t; getchar(); while(t--) { flag=0; gets(ac); if(ac[0]==‘[‘) { for(i=0;i<k;i++) { if(strcmp(ac,liu[i])==0) { printf("%s\n",xp[i]); flag=1; break; } } if(flag==0) printf("what?\n"); } else { for(i=0;i<k;i++) { if(strcmp(ac,xp[i])==0) { for(j=1;j<strlen(liu[i])-1;j++) printf("%c",liu[i][j]); printf("\n"); flag=1; break; } } if(flag==0) printf("what?\n"); } } return 0; }
哇!!!!!!睡觉咯,明天满课的同志伤不起啊!!!!!!
还是那句话,如果你发现了bug,还请指出,不胜感激!!!!!!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。