「答案正確」的條件是:
字串中必須僅有 p、 a、 t這三種字元,不可以包含其它字元;
任意形如 xpatx 的字串都可以獲得「答案正確」,其中 x 或者是空字串,或者是僅由字母 a 組成的字串;
如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a、 b、 c 均或者是空字串,或者是僅由字母 a 組成的字串。
現在就請你為 pat 寫乙個自動裁判程式,判定哪些字串是可以獲得「答案正確」的。
輸入格式:
每個測試輸入包含 1 個測試用例。第 1 行給出乙個正整數 n (<10),是需要檢測的字串個數。接下來每個字串佔一行,字串長度不超過 100,且不包含空格。
輸出格式:
每個字串的檢測結果佔一行,如果該字串可以獲得「答案正確」,則輸出 yes,否則輸出 no。
輸入樣例:
8pat
paat
aapataa
aapaataaaa
xpatx
ptwhatever
apaaataa
輸出樣例:
yesyes
yesyes
nono
nono
#include
using
namespace std;
bool
judge
(string s)
//排除t在p的前面的情況
int p1 = s.
find
('p');
int p2 = s.
find
('t');
if(p2 < p1)
return
false
;//排除p和t之間沒有a的情況
int p3 = p1 +1;
if(s[p3]
!='a'
)return
false
;//若p和t之間只有乙個a,排除p之前的a的個數與t之後的a的個數不相等的情況
int a_num = p2 - p1 -2;
if(s[0]
=='a'
&&(p2 - p1 -1)
==1)//若第乙個字母為a,且p和t之間不只有乙個a,排除不滿足題目中數量關係的情況
if(s[0]
=='a'
&&(p2 - p1 -1)
!=1)//修成正果
return
true;}
intmain()
for(
int i =
0; i < n; i++
)else
}return0;
}
雖然排除法很不是滋味,但是很有必要練習,因為座標之間的相減表示的含義往往不是一下子能夠理解,? 1003 我要通過
一直都搞錯了題目的意思,後來看了網上的解析,才知道原來題目是要apbtc滿足len a len b len c int main size t t s.find first not of a p 1 if t string npos t p 1 s t t 找出p後下乙個不是a的位置,如果不是t或者...
1003 我要通過
解題思路 剛開始讀題的時候有幾個地方沒有注意,首先xpatx其中pat兩側的應該是一樣的串,其次如果apatc正確,那麼apaatca也是正確的,以此類推apaaatcaa,apaaaatcaaa 都是正確的 include include include using namespace std i...
1003 我要通過!
只看 直接拖到最下面 其實剛一看這個題沒看懂,很輕易就能得出的結論是 必須要有pat三個字元,p,t有且只有乙個,p在t前面。第2,3點就不知道具體想表達啥了,反正我是沒看出來。看了一下網上的部落格,大家普遍認同的一種結論是 以p和t為邊界可以分為三部分 p t 也就是畫星號的三部分。我們先不管空字...