(使用STL中的数据结构进行编程7.3.15)UVA 630 Anagrams (II)(求一个单词在字典中出现的次数)
/* * UVA_630.cpp * * Created on: 2013年11月4日 * Author: Administrator */ #include <iostream> #include <cstdio> #include <map> #include <string> #include <algorithm> using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ multimap <string,string> mp; string str; int n; scanf("%d",&n); int i; for(i = 0 ; i < n ; ++i){ cin >>str; string temp = str; sort(temp.begin(),temp.end()); mp.insert(make_pair(temp,str));//map中保存的数据形式是(有序串,原串) 有序串用于比较,原串用于输出 } while(cin >> str,str != "END"){ string tp = str; sort(tp.begin(),tp.end()); cout<<"Anagrams for: "<<str<<endl; int count = 1; bool flag = false; for(map<string,string>::iterator it = mp.begin() ; it != mp.end() ; ++it){ if(tp == (*it).first){ flag = true; printf("%3d) %s\n",count++,(*it).second.c_str()); } } if(flag == false){ cout<<"No anagrams for: "<<str<<endl; } } if(t){//注意:千万别漏了,测试数据之间要输出空行... cout<<endl; } } return 0; }