ACM程序设计书中题目--B(字典问题)

来源:互联网 发布:iea数据公布 编辑:程序博客网 时间:2024/04/29 11:02
题目简述:先输入定义字典,然后按照输入查找相应的单词。
解题思路:

1、首先想到的是用map做,即使用find进行寻找。

2、但是在实际的操作中遇到了输入结束不了的问题。主要是由于定义字典之后的空行无法处理。

3、解决空行问题的方法如下:

   while(gets(c))
    {
        if(strcmp(c,"")==0)break;
        int i,l=strlen(c);
        for(i=0;i<l;++i)
        {
            if(c[i]==' ')break;
        }
        strncpy(a,c,i);
        a[i]='\0';
        strncpy(b,c+i+1,l-i);
        b[l-i]='\0';
        m[b]=a;
}
4、之后可以用find进行对输入字符的查找,然后输出对应的单词。
源代码:
#include <bits/stdc++.h>using namespace std;int main(){    map<string,string>m;    map<string,string>::iterator d;    char a[13],b[13],c[30];    while(gets(c))    {        if(strcmp(c,"")==0)            break;        int i,l=strlen(c);        for(i=0;i<l;++i)        {            if(c[i]==' ')                break;        }        strncpy(a,c,i);        a[i]='\0';        strncpy(b,c+i+1,l-i);        b[l-i]='\0';        m[b]=a;    }    string q;    while(cin>>q)    {        d=m.find(q);        if(d!=m.end())            cout<<d->second<<endl;        else            cout<<"eh"<<endl;    }    return 0;}

解题感受:
这道题花的时间相对比较多,开始有思路但是做起来并不顺手,又因为刚开始就做这道题,所以刚开始就有些碰壁,主要就是因为输入的问题不好解决。也思考了好久好久,对于这道程序还是比较发怵的。但是最后通过了,内心是非常非常开心的。虽然得到了别人的帮助,但对于自己来讲也是有很多的收获。这道题真的花了超长时间,唉……还是水平不太够啊。
0 0