尋找ABC的個數
阿新 • • 發佈:2020-07-05
記錄一下,上次校賽沒有做出來。。。。。。。。。。。。。。。。
題目(大概好像意思)是:給出一個字串,找出按順序組合成的ABC這類字串的個數。
比如:
ABC,則ABC順序組合只有1個,組合序列為123
BAC,則ABC順序組合只有0個
ABBABAC,則ABC順序組合只有4個,組合序列為127,137,157,457
AABBCC,則順序組合的有8個,組合序列為135,136,145,146,235,236,245,246
ABCBC,則順序組合的有3個,組合序列為123,125,145
解題思路(早上起床的時候,突然想到,但在比賽的時候,其他隊已經做出來了,額,自己記錄一下就行):
先把輸入字串進行掃描,分別用int A, int AB來記錄被掃描的字串中 出現A的個數和能組合成AB的個數,
當掃面到一個'B'這個字元時,把A結果累加起來成為AB的值。
當掃描到一個'C'這個字元時,把AB結果累加起來就是最後的結果。
直到把字元掃描完。
程式碼:
#include <iostream> #include <string> #define ll long long using namespace std; int main() { ll A,AB; // 用來記錄被掃描的字串中出現A的個數和能組合成AB的個數 ll ans; string str; while(cin >> str) { AView Code= 0; AB = 0; ans = 0; for (int i = 0; i < str.size(); i++) { if (str[i] == 'A') A++; else if (str[i] == 'B') { AB += A; }else if (str[i] == 'C') {// 如果掃描到'C'字元了,則看一下前面能AB的組合數 ans += AB; } } cout<< ans << endl; } return 0; }
。。。。。。。。。。。。。。。。。