【PAT乙級】有幾個PAT
- 2019 年 11 月 8 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/weixin_42449444/article/details/84865691
題目描述:
字元串APPAPT中包含了兩個單詞「PAT」,其中第一個PAT是第2位(P),第4位(A),第6位(T);第二個PAT是第3位(P),第4位(A),第6位(T)。現給定字元串,問一共可以形成多少個PAT?
輸入描述:
輸入只有一行,包含一個字元串,長度不超過105,只包含P,A,T三種字母。
輸出描述:
在一行中輸出給定字元串中包含多少個PAT。由於結果可能比較大,只輸出對1000000007取餘數的結果。
輸入樣例:
APPAPT
輸出樣例:
2
解題思路:
首先,這個題看完之後有點懵逼,然後仔細分析得出這三點:①每個P對應的PAT組合數量是A之前P的數量;②每個A對應的PAT組合數量是T之前所有甲對應的PA組合數量的累加;③所有的PAT組合數量是所有T對應的PAT組合數量的累加。
AC程式碼:
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; int len = s.length(); int countp = 0, countpa = 0, countpat = 0; for (auto it : s) { if(it == 'P') { countp++; } else if(it == 'A') { countpa += countp; } else if(it == 'T') { countpat += countpa; countpat %= 1000000007; } } cout << countpat<< endl; return 0; }