[2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest][Codeforces 883 F]Lost in Transliteration
Zarxdy34
posted @ 2017年10月23日 09:04
in Codeforces
with tags
字符串
, 557 阅读
题意:给出n个字符串,字符串中"oo"与"u"等价,"kh"与"h"等价("kkh"也与"h"等价),求不同字符串的数目。
题解:把所有"u"变成"oo"(不能反过来,否则"uo"和"ou"会判断错误),把"h"前面的"k"全部删去,然后比较有多少个不同的字符串即可。
#include <bits/stdc++.h>
using namespace std;
const int maxn=410;
void Change(char *s)
{
int n=strlen(s);
for (int i=0;i<n;i++)
{
if (s[i]=='u')
{
n++;
for (int j=n-1;j>i+1;j--) s[j]=s[j-1];
s[i]=s[i+1]='o';
}
if (s[i]=='h')
{
while (i>0 && s[i-1]=='k')
{
i--;
n--;
for (int j=i;j<n;j++) s[j]=s[j+1];
}
}
}
s[n]='\0';
}
char s[maxn][50];
int n,ans;
int main()
{
scanf("%d",&n);
for (int i=0;i<n;i++)
{
scanf("%s",s[i]);
Change(s[i]);
}
for (int i=0;i<n;i++)
for (int j=i+1;j<n;j++)
if (strcmp(s[i],s[j])>0) swap(s[i],s[j]);
for (int i=1;i<n;i++) if (strcmp(s[i],s[i-1])) ans++;
printf("%d\n",ans+1);
return 0;
}
评论 (0)