/*
* 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;
}
(使用STL中的数据结构进行编程7.3.15)UVA 630 Anagrams (II)(求一个单词在字典中出现的次数)
最新推荐文章于 2019-11-15 20:51:25 发布