HDU 1804 Deli Deli
标题链接:Click here~~
水水の文字列処理.主にmapの使い方を練習します.
しかし、この問題は、中学校で英語を勉強したばかりの頃、いろいろな懐かしさを思い出しました.
タイトル:
単語の複数形を出力します.特殊な変換があるので、事前にあげます.その他はルールに従って変換します.
問題解決の考え方:
特殊変換はmapで保存し,その他の直接シミュレーションを行う.
水水の文字列処理.主にmapの使い方を練習します.
しかし、この問題は、中学校で英語を勉強したばかりの頃、いろいろな懐かしさを思い出しました.
タイトル:
単語の複数形を出力します.特殊な変換があるので、事前にあげます.その他はルールに従って変換します.
問題解決の考え方:
特殊変換はmapで保存し,その他の直接シミュレーションを行う.
#include <map>
#include <string>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
bool fuyin(char c)
{
return c-'a' && c-'e' && c-'i' && c-'o' && c-'u';
}
bool ES(char d,char c)
{
return c=='o' || c=='s' || c=='x' || (c=='h'&&(d=='c'||d=='s'));
}
int main()
{
int n,m,l;
char a[25],b[25];
string A,B;
map<string,string> M;
map<string,string>::iterator it;
while(~scanf("%d%d",&m,&n))
{
while(m--)
{
scanf("%s%s",a,b);
M[a] = b;
}
while(n--)
{
scanf("%s",a);
it = M.find(a);
if(it != M.end())
cout<< (*it).second <<endl;
else
{
l = strlen(a);
if(fuyin(a[l-2]) && a[l-1]=='y')
{
a[l-1]='i';
strcat(a,"es");
}
else if(ES(a[l-2],a[l-1]))
strcat(a,"es");
else
strcat(a,"s");
puts(a);
}
}
M.clear();
}
return 0;
}