题解 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;
        }
    }
}