1003 我要通過! 20 分

2021-09-26 16:17:56 字數 1490 閱讀 9890

說實話,這道題還是很難的,我記得我第一次做的時候,題目都沒讀懂。到後來看了一遍解析之後再做,還是心有餘悸。

首先三個條件:

1. 只包

含pat

三個字元

\color1.只包含pat三個字元

1.只包含p

at三個

字元所以遍歷一遍,把包含其他字元的字串直接輸出no

2. 形如

xpat

x的是正

確的答案

,x為空

或者僅由

a組成。

\color2.形如xpatx的是正確的答案,x為空或者僅由a組成。

2.形如xp

atx的

是正確的

答案,x

為空或者

僅由a組

成。這個條件的理解是p和t只出現一次,且p在t的左邊,兩者中間隔了乙個a,而且左右兩個x的長度相同且僅由a組成。

3. 如果

apbt

c是正確

,那麼a

pbat

ca也是

正確的。

其中a,

b,c均

或者是空

字串,

或者僅由

a組成。

\color3.如果apbtc是正確,那麼apbatca也是正確的。其中a,b,c均或者是空字串,或者僅由a組成。

3.如果ap

btc是

正確,那

麼apb

atca

也是正確

的。其中

a,b,

c均或者

是空字元

串,或者

僅由a組

成。這個條件的理解是:apbtc要正確,則只能從條件2得來,所以apbtc必須滿足xpatx,也就是說b要等於a且a==c即apata,而apbatca成立,在中間加上了乙個a,在末位加上p前面a的長度。如果記p前面的長度為x,p和t之間的長度為y,t後面的長度為z(都不包含邊界)。那麼滿足中間增加乙個a的長度時,後面增加x的長度,才能滿足是成立的字串。

如果逆向思考,把乙個字串縮短,即z-x同時y-1後也是成立的字元,直到最後y=1而此時應該滿足x==z

#include

#include

#include

using namespace std;

intmain()

if(nump !=

1|| numt !=1||

(loct - locp <=1)

|| others !=0)

int x = locp, y = loct - locp -

1, z = str.

size()

- loct -1;

if(x != z - x*

(y -1)

)else cout<<

"yes"

<}return0;

}

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...

1003 我要通過! 20分

written by 東籬下 悠然 只能有p a t 三種字元,出現別的字元即pass 只能有乙個p和乙個t 根據給出的幾個正確的樣例,分別可以得出 p和t之間可以任意加a,開頭的a的個數 中間的a的個數 結尾的a的個數,並且p和t之間不能為空串 學習 include using namespace...

1003 我要通過! 20 分

題意 題目給出乙個字串,可能有p a t或其他字元。現在需要根據以下幾個條件來判斷該字串能否輸出 yes 條件1 如果出現p a t以外的字元,輸出 no 初始狀態下p和t必須各恰好有乙個,且p在t左邊,p和t之間至少有乙個a,否則輸出 no 條件2 pat apata aapataa aaapat...