1003. 我要通过!(20)

刚开始没搞懂,是啥意思,在网上看了下,其实就是左边*中间=右边(对于A来说),掌握了if(s[i]!='P'&&s[i]!='A'&&s[i]!='T')和if(flag||a<1||p!=1||t!=1),其实&&就是对于它来说s[i]必须满足是不是PAT中的任意一个才符合,||就是只要满足其中一个都是符合的,下面会贴出实验代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        string s;
        cin>>s;
        int flag=0;
        int p=0,a=0,t=0;
        for(int i=0;s[i];i++)
        {
            if(s[i]!='P'&&s[i]!='A'&&s[i]!='T')
            {
                flag=1;
                break;
            }
            else if(s[i]=='P')
                p++;
            else if(s[i]=='A')
                a++;
            else if(s[i]=='T')
                t++;
        }
        if(flag||a<1||p!=1||t!=1)
        {
            cout<<"NO"<<endl;
            continue;
        }
        if(a==1&&s!="PAT")
        {
            cout<<"NO"<<endl;
            continue;
        }
        int i,l=0,c=0,r=0;
        int len=s.size();
        for(i=0;i<len;i++)
        {
            if(s[i]=='A')
                l++;
            if(s[i]=='P')
                break;
        }
        for(i+=1;i<len;i++)
        {
            if(s[i]=='A')
                c++;
            if(s[i]=='T')
                break;
        }
        for(i+=1;i<len;i++)
        {
            if(s[i]=='A')
                r++;
        }
        if(l*c==r)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;

    }
    return 0;
}

实验代码:&&和||

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        if(n!=1&&n!=2&&n!=3)
            cout<<"NO"<<endl;
        if(n!=1||n!=2||n!=3)
            cout<<"YES"<<endl;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/Wchenchen0/article/details/80009695