输入一个字典(用*******结尾),然后再输入若于单词。每输入一个单词w,你需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:()。输入单词之间用空格或空行隔开,且所有输入单词都不超过6个小写字母组成。注意,字典中的单词不一定按字典序排列。
样例输入:
tarp given score refused only trap work earn course pepper part
*******
resco nfudre aptr sett oresuc
样例输出:
score
refund
part tarp trap
:(
course
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; /* 输入一个字典(用*******结尾),然后再输入若于单词。每输入一个单词w,你需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:()。输入单词之间用空格或空行隔开,且所有输入单词都不超过6个小写字母组成。注意,字典中的单词不一定按字典序排列。 样例输入: tarp given score refused only trap work earn course pepper part ******* resco nfudre aptr sett oresuc 样例输出: score refund part tarp trap :( course */ vector<string> dictionary; vector<string> copyDic; string sortt(string s) {//将string排序返回 char c[16]; strcpy(c,s.c_str()); sort(c,c+s.length()); return string(c); } void fun() { copyDic=dictionary; int i,j; for(i=0;i<copyDic.size();i++) {//将字典中的每个单词排序,保存到copy中 string s=copyDic[i]; copyDic[i]=sortt(s); } } int main() { string s; while(cin>>s) { if(s=="*******") break; dictionary.push_back(s); } fun(); while(cin>>s) { int flag=1,j; for(j=0;j<copyDic.size();j++) { if(sortt(s)==copyDic[j]) { flag=0; cout<<dictionary[j]<<" "; } } if(flag) cout<<":("; cout<<endl; } return 0; }