码迷,mamicode.com
首页 > 其他好文 > 详细

HDU1113 Word Amalgamation

时间:2016-06-18 10:18:16      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

问题链接:HDU1113 Word Amalgamation

这个问题是一个字典问题,自然用map来实现。问题在于还需要转个弯,不然会掉进陷阱里去的。

查字典问题,通常是单词按照字典顺序存放,然后将要查的单词拆成字母,按单词的字母顺序去查字典。然而要是这样做程序的逻辑就太零碎繁杂了。

于是,把单词中的字符排个顺序作为关键字,来查单词的话就方便了。需要注意的一点,不同的单词有可能具有相同的关键字。

这个程序的关键有容器类map的使用,算法库<algorithm>中函数sort()的使用。

AC程序如下:

/* HDU1113 Word Amalgamation */

#include <iostream>
#include <map>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
    map<string, string> dic;
    string word, key;

    while(cin >> word && word != "XXXXXX") {
        key = word;
        sort(key.begin(), key.end());
        dic[word] = key;
    }

    while(cin >> key && key != "XXXXXX") {
        sort(key.begin(), key.end());

        bool flag = true;
        for(map<string, string>::iterator it=dic.begin(); it!=dic.end(); it++) {
            if(it->second == key) {
                cout << it->first << endl;
                flag = false;
            }
        }

        if(flag)
            cout << "NOT A VALID WORD" << endl;

        cout << "******" << endl;
    }

    return 0;
}


HDU1113 Word Amalgamation

标签:

原文地址:http://blog.csdn.net/tigerisland45/article/details/51704589

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!