PAT B1003 我要通過!

2022-08-23 22:42:13 字數 849 閱讀 1688

我覺得這是pat中最坑的一道題,表述令人很不適應

分析過程:

條件1.只有p,a,t三種字元

條件2.xpatx正確,x可以是空串,或者由a組成的字串

條件3.如果apbtc是正確的,apbatca也是正確的,a,b,c與上一條件x相同

1,2為基本條件,根據1,2推3

根據條件1,2=》xpatx正確

條件3中:

首先有xpatx正確

apbtc中a=x,b=1,c=x;

則有apbatca中a=x,b+1=2,c+a=2x;

則有a=x,b+1=3,c+a=3x;

。。。。

以此類推可得對於apbtc要滿足ab=c,而且b》=1

<-------------------------------------------->

解決了邏輯問題,要處理**了。

將一行資料存入字串,遍歷,每個字元map對映加一,並儲存pt的位置

只要map中pt只有乙個,a至少乙個

另外要使ab = c,只要p * (t - p - 1) == strlen(arr) - t - 1,不用考慮t是否在p前邊,如果那樣計算出來的b為負

#include#include#includeusing namespace std;

int main()

if (mp['p'] == 1 && mp['t'] == 1 && mp['a'] != 0 && mp.size() == 3 && p*(t - p - 1) == strlen(arr) - t - 1)

else

} return 0;

}

PAT B1003 我要通過!(滿分20)

思路點撥 這道題的關鍵之處在於對第三個條件的解讀 條件三 如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a b c 均或者是空字串,或者是僅由字母 a 組成的字串。解讀 a,b,c分別為a的個數。只要滿足規律 ab c,則條件三就成立。會發現第二個條件是第三個條件的特殊情況。所...

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