//372K 3047MS C++
#include <cstdio>
#include <cstring>
#include <map>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
char str[50];
typedef map<string, int> MyMap;
MyMap treeNumberMap;
typedef MyMap::iterator MyIterator;
MyIterator myIt;
int treeNum;
string name;
int main() {
while(getline(cin,name)) {
// printf("A %s\n", str);
myIt = treeNumberMap.find(name);
treeNum++;
if (myIt != treeNumberMap.end()) {
// printf("%s %d\n", str, myIt->second);
myIt->second++;
} else {
treeNumberMap.insert(pair<string, int>(name, 1));
}
}
for(myIt = treeNumberMap.begin();myIt != treeNumberMap.end();myIt++)
{
cout<<myIt->first;
printf(" %.4f\n",(myIt->second)*100.0/treeNum);
}
}
目的应该是练tire树(说实话,30长度的单词,很怀疑tire树话,MLE, 不过在discuss里有人搞出来了),或者让你自己手写一个BST, 不过我直接STL了,
就当练习一下stl map的使用,别说,还真是有些生疏了.
这道题是水题的原因是之要求最后按照map的key值(及树名称的字母ASCII顺序)输出即可, 如果要求按val大小输出,如果val一样再按key输出的话,就没那么好搞了,
可能还需要把map里的数全部倒腾到vector里面进行处理输出. 一个比较经典的问题:stl map 按值输出.
http://blog.csdn.net/flybywind/article/details/7536311
mark 一下, 以后作为自己写BST的测试工具.