刚开始没搞懂,是啥意思,在网上看了下,其实就是左边*中间=右边(对于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;
}