1. 程式人生 > >1003 我要通過!(20)(20 分)

1003 我要通過!(20)(20 分)

題目:https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192

答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。

得到“答案正確”的條件是:

1. 字串中必須僅有P, A, T這三種字元,不可以包含其它字元;\

  1. 任意形如 xPATx 的字串都可以獲得“答案正確”,其中 x 或者是空字串,或者是僅由字母 A 組成的字串;\
  2. 如果 aPbTc 是正確的,那麼 aPbATca 也是正確的,其中 a, b, c 均或者是空字串,或者是僅由字母 A 組成的字串。

現在就請你為PAT寫一個自動裁判程式,判定哪些字串是可以獲得“答案正確”的。

輸入格式: 每個測試輸入包含1個測試用例。第1行給出一個自然數n (&lt10),是需要檢測的字串個數。接下來每個字串佔一行,字串長度不超過100,且不包含空格。

輸出格式:每個字串的檢測結果佔一行,如果該字串可以獲得“答案正確”,則輸出YES,否則輸出NO。

輸入樣例:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

輸出樣例:

YES
YES
YES
YES
NO
NO
NO
NO

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	int i,j,num,sum=0;
	int len=0;
	int a1=0,p=0,t=0,a2=0,a3=0;//a1、p、a2、t、a3分別用來存:P之前的A,P,P和T之間的A,T,T之後的A  的數量
char str[10][150]; //把輸入的每個字串存入陣列 char arr[10]; //來做標記用的,判斷字串是否正確,以便最後輸出 cin>>num; for(i=0;i<num;i++){ cin>>str[i]; } for(i=0;i<num;i++){ len=strlen(str[i]); a1=a2=a3=p=t=0; //每次記得要把變數清零,方便下一個字串的計數 for(j=0;j<len;){ while(str[i][j]=='A'){//是在while迴圈裡面j++,而不是把j++放在for()裡面或者str[i][j++]
a1++; j++; } while(str[i][j]=='P'){ p++; j++; } while(str[i][j]=='A'){ a2++; j++; } while(str[i][j]=='T'){ t++; j++; } while(str[i][j]=='A'){ a3++; j++; } sum=a1+p+a2+t+a3; //用來判斷是否含有其他字元 if(sum!=len){ //含有其他字元就記為'0',此條字串判斷完畢,退出本次迴圈 arr[i]='0'; break; } else if(p==1&&t==1&&a1==a3&&a2>=1){ //重點:見下詳解 arr[i]='1'; break; } else if(p==1&&t==1&&a2!=0&&(a1*a2)==a3){ //重點:見下詳解 arr[i]='1'; break; } arr[i]='0'; //不滿足條件的標記為'0' } } for(i=0;i<num;i++) if(arr[i]=='1') printf("YES\n"); else printf("NO\n"); return 0; }

這個題目真的是讓我很心累啊,其實自己做了半天,但是一直有兩個通不過。後來自己看了下別人的思路,才通過。

其實這個題目就是需要你發現其中關鍵的數學規律:

  1:當P之前和T之後都為空字串時,PAT成為條件3中的那個正確的串,迴圈往復,那麼P和T之間就可以有任意多的A

  2:當P之前和T之後都有數量相等的A時,當它成為條件3中的那個正確的串,可以發現,每次P和T之間增加一個A,T之後的A的數量會增加一倍 最初P之前A的數量,即:

      a1 P a2 T a3

      a1*a2=a3  且  a2!=0

我自己就是這個規律沒有找好,所以通過的測試點也不全。

相關推薦

PTA乙級題 1003 通過 20

1003 我要通過! (20 分) “答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是:

1003 通過 20

“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是: 字串中必須僅有 P、 A、 T這三種字元,不可以包含其它字

PAT乙級1003 通過 20

“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是:

1003 通過 20

“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是:

PAT-1003 通過 20

1003 我要通過! (20 分) “答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯

PAT刷題集乙級1003 通過20

1003 我要通過!(20 分) “答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”

1003 通過(20)20

題目:https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192 “答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字串滿足下列

1003 通過20 題目實在看不懂。。。。

“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是: 字串中必須僅有 P、 A、 T這三種字元,不可以包含其它字元; 任意形

C++·PAT乙級1003. 通過(17/20)

c++ ons 復雜 RR 空字符串 std 答案 %s strlen /* 1003. 我要通過!(20) “答案正確”是自動判題系統給出的最令人歡喜的回復。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案

pat 1003 通過(20)

裁判 pro 組成 title brush true get char s hat 1003 我要通過!(20)(20 分) “答案正確”是自動判題系統給出的最令人歡喜的回復。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件,系統就輸出“答案正確

1003. 通過(20)-浙大PAT乙級真題

1003. 我要通過!(20)“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。得到“

1003. 通過(20)(java版)

這個PAT欄目就記錄一些我用java實現的PAT上的題,有甲級的有乙級的,但並不是所有的題都記錄,因為有些題確實沒有記錄的意義,我就記錄一些我感覺有一些價值或者不太好理解的題,有時我不會的題,我會轉載一些解題方法,希望可以幫助到大家。 我第一道被難住的題,

1003. 通過(20)-浙大PAT乙級真題Java實現

1003. 我要通過!(20)“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。

PAT 乙級 1003. 通過(20) Java版

“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是: 1. 字串中必須僅有P, A, T這三種字元,不可以包含其它字元; 2.

PAT (Basic Level) Practice 1003 通過兩種解法

乙級1003 這題和HOJ3788一樣,故把那邊的sample也拿過來: 題意好理解,就對條件3解釋一下: 如果 aPbTc 是正確的,那麼 aPbATca 也是正確的,其中 a、 b、 c 均或者是空字串,或者是僅由字母 A 組成的字串。 就相當於是先對aPbATca進行操作成aPb

PAT乙級1003 通過C語言實現

總結:1、重要的是找規律。即: 形如 xPATx 的字串正確的有: PAT、APATA、AAPATAA、AAAPATAAA,就是中間一個A左右加上等量的A(不加也行)都是正確的。 如果 aPbTc 是正確的,那麼 aPbATca 也是正確的,拿上面的那幾個正確的

PAT——1003. 通過

ron 正則表達 test 現在 gre 空字符串 spa get 測試 原題目鏈接:我要通過 “答案正確”是自動判題系統給出的最令人歡喜的回復。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到

PAT 1003.通過

clas names 接下來 close != 條件 alt 裁判 iostream 1003. 我要通過!(20) “答案正確”是自動判題系統給出的最令人歡喜的回復。本題屬於PAT的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件,系統就輸出“答案正確”,否則輸

1003 通過| PAT (Basic Level) Practice

get esp 必須 記錄 字母 字符串個數 con jdi 空格 1003 我要通過! (20 分) “答案正確”是自動判題系統給出的最令人歡喜的回復。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”

PAT 乙級真題 1003 通過題解

1003 我要通過! (20 分) “答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是: 字串中必須僅有 P、