(使用STL中的数据结构进行编程7.3.15)UVA 630 Anagrams (II)(求一个单词在字典中出现的次数)

时间:2024-06-25 16:04:56
/*
* 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;
}