题意:输入一个字典(多个单词),然后每输入一个单词,在字典中找到某个单词经过重新排序后与之相等,并按照字典顺序从小到大输出(字典中不存在时有输出NOT A VALID WORD)。
思路:先把字典中所有单词按照字典顺序排序 然后再单个单词按照字典顺序排序 之后测试样例每个单词排序好,在字典中寻找对应的单词,输出该单词。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
using namespace std;
int main()
{
string a[105],b[105],c;
int n,i;
for(i=0;; i++) //输入字典
{
cin>>a[i];
if(a[i][0]=='X')
break;
}
sort(a,a+i); //单词之间字典排序
n=i;
for(i=0;i<n;i++)
{
b[i]=a[i]; //a串排序 b串起输出作用
sort(a[i].begin(),a[i].end());//单词之内字典排序
}
while(cin>>c)//测试样例
{
if(c[0]=='X')
break;
int index=0;
sort(c.begin(),c.end());//样例排序
for(i=0;i<n;i++)
{
if(c==a[i])
{
index=1;
cout<<b[i]<<endl;
}
}
if(index==0)//没有在字典中找到对应单词
{
cout<<"NOT A VALID WORD"<<endl;
}
cout<<"******"<<endl;
}
return 0;
}