1003 我要通過! 20 (20 分)

2022-09-02 02:18:14 字數 1749 閱讀 3528

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

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

1. 字串中必須僅有p, a, t這三種字元,不可以包含其它字元;\

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

如果 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

仔細閱讀條件,發現條件之間是有著相互關係的,也就是說條件之間不是獨立的。

1.有且必有p,a,t三種字元,不能包含其他字元;

2.形如xpatx的字串,其中x或是空字串,或是僅由a組成的字串;

3.「如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a, b, c 均或者是空字串,或者是僅由字母 a 組成的字串。」這句話我起初沒有理解,後來在參考了別人的**後,發現這句話其實是讓考生找出其中的規律。規律如下:a*b=c。其中a,b,c均為字串中a的數量。

注意:這三個條件是有巢狀關係的,2、3兩個條件是建立在條件1成立的基礎之上的,條件3是建立在條件1和2成立的基礎之上的。

我在看了樣例中輸入pt後的結果才發現這一點,因為條件3和條件2是必須同時滿足才能算正確,所以樣例中輸入pt,才會輸出「no」。

實現方法:

1.首先排除掉不符合條件的資料,即出現了pat以外的字元和p,t出現過兩次及以上的資料;

2.再找出p,a,t的下標,根據下標來判斷是否滿足條件2和條件3,然後根據是否滿足條件,輸出yes or no即可。

對於第3個規則:apbtc如果正確,那麼b一定是a、a=c,ba就是aa,a*2=aa=ca。

#include#include

intmain()else

if(str[i] == '

t')else

if(str[i] != 'a')

}if(other > 0 || nump != 1 || numt != 1 || post-posp<=1 )else

else} }

return0;

}

1003 我要通過! 20 (20 分)

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

1003 我要通過! 20 分

說實話,這道題還是很難的,我記得我第一次做的時候,題目都沒讀懂。到後來看了一遍解析之後再做,還是心有餘悸。首先三個條件 1.只包 含pat 三個字元 color1.只包含pat三個字元 1.只包含p at三個 字元所以遍歷一遍,把包含其他字元的字串直接輸出no 2.形如 xpat x的是正 確的答案...

1003 我要通過! 20分

github 不全,更新中 分析 1.首先保證p前,t後,p和t之間全都是a 2.根據題目的第二條和第三條 假如x aa 則aapataa正確 aapa ataa aa正確 aapaaa taaaaaa 正確 2個 1個 2個 2個 2個 2 2個 2個 3個 2 3個 設len1 p前a,len2...