标签:
问题链接: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; }
标签:
原文地址:http://blog.csdn.net/tigerisland45/article/details/51704589