PAT乙1003 我要通過!

2022-06-24 04:57:10 字數 1667 閱讀 7665

「答案正確」是自動判題系統給出的最令人歡喜的回覆。本題屬於 pat 的「答案正確」大派送 —— 只要讀入的字串滿足下列條件,

系統就輸出「答案正確」,否則輸出「答案錯誤」。

得到「答案正確」的條件是:

字串中必須僅有pat這三種字元,不可以包含其它字元;

任意形如xpatx的字串都可以獲得「答案正確」,其中x或者是空字串,或者是僅由字母a組成的字串;

如果apbtc是正確的,那麼apbatca也是正確的,其中abc均或者是空字串,或者是僅由字母a組成的字串。

現在就請你為 pat 寫乙個自動裁判程式,判定哪些字串是可以獲得「答案正確」的。

每個測試輸入包含 1 個測試用例。第 1 行給出乙個正整數 n (<10),是需要檢測的字串個數。接下來每個字串佔一行,

字串長度不超過 100,且不包含空格。

每個字串的檢測結果佔一行,如果該字串可以獲得「答案正確」,則輸出yes,否則輸出no

8

patpaat

aapataa

aapaataaaa

xpatx

ptwhatever

apaaataa

yes

yesyes

yesno

nono

no

首先找出p,t位置,判斷p,t位置是否符合要求,然後判斷其他位置是否全為a,然後判斷p左邊a數與t右邊a數是否相等,或者是否右邊a數減去左邊a數除以p,t中間a數-1是否等於左邊a數(條件3)

1 #include 2

using

namespace

std;34

char s[100 + 5];5

6int

main()722

else

if (s[i] == 't'

)2327}

28if (p == -1 || t == -1 || p > t || p + 1 == t) //

p,t不符合要求輸出no

2933

for (int i = 0; i < s_len; i++) //

判斷除了p,t其他是否全為a,不是a則輸出no

3441}42

if (!flag)

43continue;44

if (p == s_len - t - 1 || (s_len - t - 1 - p) / (t - p - 2) == p) //

判斷p左邊a和t右邊a是否相等,或者是否右邊a數減去左邊a數除以p,t中間a數-1是否等於左邊a數(條件3)

45 printf("

yes\n");

46else

47 printf("

no\n");

48}49return0;

50 }

PAT乙級 1003 我要通過

考察了分而治之的思想。題目的表述讓我聯想起表示式的bnf描述 乙個數是表示式 在表示式兩邊加個括號也是表示式 兩個表示式相加也是表示式 接下來你全懂了 實際上就是按照題目要求,將檢查指標細分,以求達到庖丁解牛 逐個擊破的效果。源 c include include 得到 答案正確 的條件是 字串中必...

PAT 1003 我要通過!

深刻理解 如果 apbtc 是正確的,那麼 apbatca 也是正確的 可以用數學表示式寫為 a b 1 c a 其中a,b,c,1均為含有字元 a 的個數 故可得len a len b len c 上 思路仿寫了另一位博主的 include include using namespace std ...

PAT 1003 我要通過!

答案正確 是自動判題系統給出的最令人歡喜的回覆。本題屬於pat的 答案正確 大派送 只要讀入的字串滿足下列條件,系統就輸出 答案正確 否則輸出 答案錯誤 得到 答案正確 的條件是 1.字串中必須僅有p,a,t這三種字元,不可以包含其它字元 2.任意形如 xpatx 的字串都可以獲得 答案正確 其中 ...