首页 > 代码库 > 魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

Problem Description
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。

给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
 

Input
首先列出词典中不超过100000条不同的魔咒词条,每条格式为:

[魔咒] 对应功能

其中“魔咒”和“对应功能”分别为长度不超过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,还请指出,不胜感激!!!!!!