「答案正確」是自動判題系統給出的最令人歡喜的回覆。本題屬於 pat 的「答案正確」大派送 —— 只要讀入的字串滿足下列條件,
系統就輸出「答案正確」,否則輸出「答案錯誤」。
得到「答案正確」的條件是:
字串中必須僅有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
首先找出p,t位置,判斷p,t位置是否符合要求,然後判斷其他位置是否全為a,然後判斷p左邊a數與t右邊a數是否相等,或者是否右邊a數減去左邊a數除以p,t中間a數-1是否等於左邊a數(條件3)
1 #include 2using
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 的字串都可以獲得 答案正確 其中 ...