PAT1003 我要通过!
时间:2014-04-28 14:55:50
收藏:0
阅读:739
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于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
分析:此题的关键是要读懂题,其中,XPATX中PAT左右应该有相同的A,并且根据数学上的推算,P上左边的A乘以P和T中间的A得出来的总个数应该T右面A的总数。
自己的代码:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 bool JudgePAT(string temp); 5 6 7 8 int main(int argc, char* argv[]) 9 { 10 int i=0,j; 11 int count; 12 cin>>count; 13 string tempt; 14 while(count--) 15 { 16 //open=true; 17 cin>>tempt; 18 //第一层检验PAT 19 if(!JudgePAT(tempt)) 20 { 21 cout<<"NO"<<endl; 22 continue; 23 } 24 25 //检验PAT中只含有一个P和一个T 26 { 27 int ppos=-1,tpos=-1; 28 int countT=0,countP=0; 29 for(i=0;i<tempt.size();i++) 30 { 31 if(tempt[i]==‘T‘) 32 { 33 countT++; 34 tpos=i; 35 } 36 if(tempt[i]==‘P‘) 37 { 38 countP++; 39 ppos=i; 40 } 41 } 42 if(countT!=1||countP!=1) 43 { 44 cout<<"NO"<<endl; 45 continue; 46 } 47 else if(countT==1&&countP==1) 48 { 49 if(tpos-ppos<2) 50 { 51 cout<<"NO"<<endl; 52 continue; 53 } 54 } 55 } 56 //进行乘法的检验,即将P左边的A的个数与PT中间A的个数进行相乘,应该等于T后面的个数 57 { 58 int left=0,middle=0,right=0; 59 for(i=0;i<tempt.size();i++) 60 { 61 if(tempt[i]==‘P‘) 62 break; 63 else if(tempt[i]==‘A‘) 64 left++; 65 } 66 for(;i<tempt.size();i++) 67 { 68 if(tempt[i]==‘T‘) 69 break; 70 else if(tempt[i]==‘A‘) 71 middle++; 72 } 73 for(;i<tempt.size();i++) 74 { 75 if(tempt[i]==‘A‘) 76 right++; 77 } 78 if(left*middle==right) 79 { 80 cout<<"YES"<<endl; 81 } 82 else 83 { 84 cout<<"NO"<<endl; 85 } 86 continue; 87 88 } 89 } 90 return 0; 91 } 92 bool JudgePAT(string temp) 93 { 94 int i; 95 for(i=0;i<temp.size();i++) 96 if(temp[i]!=‘P‘&&temp[i]!=‘A‘&&temp[i]!=‘T‘) 97 return false; 98 return true; 99 }
评论(0)