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