pat乙级1003
2017-03-31 22:00
113 查看
//“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。 // //得到“答案正确”的条件是: // //1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符; //2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串; //3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。 // //现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。 //输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。 // //输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。 // //输入样例: //8 //PAT //PAAT //AAPATAA //AAPAATAAAA //xPATx //PT //Whatever //APAAATAA //输出样例: //YES //YES //YES //YES //NO //NO //NO //NO #include<iostream> #include<string> using namespace std; int main(void){ int judgest(string s); int flag[10]; string s; int n; cin>>n; int i; for(i=0;i<n;i++) { cin>>s; flag[i]=judgest(s); } for(i=0;i<n;i++){ if(flag[i]==1) cout<<"YES"<<'\n'; if(flag[i]==0) cout<<"NO"<<'\n'; } } int judgest(string s){ int flag=1; int i; int index1; int index2; int len=s.size(); for(i=0;i<s.size();i++){ if(s[i]!='P'||s[i]!='A'||s[i]!='T') flag=0; } index1=s.find('P',0); index2=s.find('T',0); //从0开始查找T在当前字符串的位置 if(index1==string::npos||index2==string::npos) flag=0; else{ string a(s,0,index1); string b(s,index1+1,index2-1); string c(s,index2+1,len); // for(i=0;i<a.size();i++){ // if(a[i]!='A'||a[i]!='') flag=0; // } // for(i=index2;i<=len;i++){ // if(c[i]!='A'||c[i]!='') flag=0; // } // for(i=index;i<=index2-1;i++){ // if(b[i]!='A') flag=0; // } // } //调用find方法,更高效 string subs=a+b+c; if(subs.find_first_not_of('A')!=string::npos) flag=0; //寻找字符串中第一个与A不匹配的字符,存在就error else{ if(index1==0&&len-index2-1==0&&(index2-index1==2)) flag=1; else if(((index1+1)*(index1+1)==len-index2)&&(index2-index1-2)==1) flag=1; else flag=0; } return flag; } }
相关文章推荐
- PAT乙级1003.浅析(C语言)
- PAT 乙级 -- 1003 -- 我要通过!
- PAT 乙级 1003. 我要通过!(20) Java版
- PAT 乙级1003. 我要通过!(JAVA版)
- 乙级 PAT 1003. 我要通过!(20)
- PAT_乙级 1003 我要通过!
- PAT 乙级-1003 我要通过!
- PAT 乙级 1003
- PAT乙级题 1003 python解答
- PAT乙级(Basic Level)真题-1003 数素数 (20)
- PAT乙级1003
- ------PAT乙级----1003
- PAT乙级1003
- PAT乙级 1003. 我要通过!(20)
- 浙江大学PAT_乙级_1003. 我要通过!(20)
- PAT乙级1003我要通过!(20)
- PAT_乙级1003
- PAT(乙级) 1003.我要通过
- 浙大PAT乙级 1003. 我要通过!
- PAT乙级—1003. 我要通过!(20)-native