我覺得這是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...