HDU1113 Word Amalgamation

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU1113 Word Amalgamation相关的知识,希望对你有一定的参考价值。

问题链接: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的主要内容,如果未能解决你的问题,请参考以下文章

HDU-1113-Word Amalgamation

HDU1113 Word Amalgamation

poj1318 Word Amalgamation

poj 1318 Word Amalgamation

UVa 642 - Word Amalgamation

HDU_1113_字符串处理