1003 我要通過! 20

2022-09-03 02:54:07 字數 1572 閱讀 9015

答案正確」是自動判題系統給出的最令人歡喜的回覆。本題屬於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

patpaat

aapataa

aapaataaaa

xpatx

ptwhatever

apaaataa

輸出樣例:

yes

yesyes

yesno

nono

no題目分析:

條件一:字串只p、a、t這三種字母

條件二:形如xpatx正確,x可為空字串,也可為僅含a的任意字串,兩個x字串可不一樣

條件三:只有由條件二推出的正確答案x1patx2,即使(a=x1,b=a,c=x2)條件成立才滿足apbtc為正確答案,此時條件三才成立,則apbatca(即x1paatx2x1)為正確答案。條件三可繼續推導當

x1paatx2x1為正確答案時,即(a=x1,b=aa,c=x2x1)成立時,則apbatca(即x1paaatx2x1x1)為正確答案......

#include#include

#include

int judge(char

a);

intmain()

for(i=0;i)

return0;

} int judge(char

a) temp=right-middle*left;

if(p==0||t==0||middle==0)//

p或t未出現,p、t間無a

return0;

else

if(middle>1&&temp>=0||middle==1

)

return1;

}

1003 我要通過! 20

pat1003 規則1和2是基本要求 規則3 apbtc apbatca,那麼可以逆推 apbatca 到 apbtc,直到 a pata 這種形式,說明源字串是符合要求的 詳細說明 apbtc,則b中每次減少乙個a,c中減少a字串,直到cpatd形式,若c d,則說明滿足規則2,即原串符合要求 i...

1003 我要通過! 20

1.字串中必須僅有p,a,t這三種字元,不可以包含其它字元 2.任意形如 xpatx 的字串都可以獲得 答案正確 其中 x 或者是空字串,或 者是僅由字母 a 組成的字串 3.如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a,b,c 均或者是空字串,或者是僅由字母 a 組成的字...

1003 我要通過! 20

先貼上題目 這個題目從開始思考,到最終得到 答案正確 的時間跨度很長,主要原因有 1.題目要求分析不清 2.實現時,出現幾個困難點 1 如何讀入多個字串?最初出現問題可能是由於沒有注意到題目中要求字串長度不超過100 2 陣列元素個數未知,如何避免出現錯誤?this is the code.incl...