题解 UVA12289 【One-Two-Three】
题目所述,弟弟只有可能填写1、2、3,
那么我们就分别判断:
如果是3,它的英文是three,字母数为5,而其它两个为3,那么,判断一下字母数就好了。
代码如下:
if(s.size()==5)
cout<<3<<endl;
如果是2和1,它们字母数相等,那该如何判断呢?
题目中说,最多写错一个字母,那,直接判断有没有两个字母和1或2符合不就完事啦。
代码如下:
else
{
if(s[0]=='o'&&s[1]=='n')
cout<<1<<endl;
else if(s[0]=='t'&&s[1]=='w')
cout<<2<<endl;
else if(s[1]=='n'&&s[2]=='e')
cout<<1<<endl;
else if(s[1]=='w'&&s[2]=='o')
cout<<2<<endl;
else if(s[0]=='o'&&s[2]=='e')
cout<<1<<endl;
else
cout<<2<<endl;
}
最后,发一遍完整代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
long long i,x,j,m,l,n,k,t=0,y,ans=1,mm=0,num=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>s;
if(s.size()==5)
cout<<3<<endl;
else
{
if(s[0]=='o'&&s[1]=='n')
cout<<1<<endl;
else if(s[0]=='t'&&s[1]=='w')
cout<<2<<endl;
else if(s[1]=='n'&&s[2]=='e')
cout<<1<<endl;
else if(s[1]=='w'&&s[2]=='o')
cout<<2<<endl;
else if(s[0]=='o'&&s[2]=='e')
cout<<1<<endl;
else
cout<<2<<endl;
}
}
}