1003 我要通過! (20分)
「答案正確」是自動判題系統給出的最令人歡喜的回覆 回復。本題屬於 PAT 的「答案正確」大派送 —— 只要讀入的字串滿足下列條件,系統就輸出「答案正確」,否則輸出「答案錯誤」。
得到「答案正確」的條件是:
字串中必須僅有 P、 A、 T這三種字元,不可以包含其它字元;
任意形如 xPATx 的字串都可以獲得「答案正確」,其中 x 或者是空字串,或者是僅由字母 A 組成的字串;
如果 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
參考這篇文章:https://blog.csdn.net/qq_43160216/article/details/86516462?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159688373919725222455873%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159688373919725222455873&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-4-86516462.first_rank_v2_rank_v25&utm_term=1003+我要通過!+%2820分%29&spm=1018.2118.3001.4187
#include<stdio.h>
int main()
{
int n,i,result[11];
char c;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
int c1=0,c2=0,c3=0,flag=1,cnt=0,P=0,T=0,A=0;
//flag判斷是否有其他字元
//cnt表示狀態
while((c=getchar())!='\n')
{
if(c=='P')
{
P++;
cnt=1;
}
else if(c=='A')
{
A++;
}
else if(c=='T')
{
T++;
cnt=2;
}
else
flag=0;
switch(cnt)
{
case 0:
c1++;
break;
case 1:
if(c!='P')
c2++;
break;
case 2:
if(c!='T')
c3++;
break;
}
}
if(flag&&(P==1)&&(T==1)&&(A!=0)&&(c1*c2==c3))
result[i]=1;
else
result[i]=0;
}
for(i=0;i<n;i++)
{
if(result[i]==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}