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