1. 程式人生 > 實用技巧 >尋找ABC的個數

尋找ABC的個數

記錄一下,上次校賽沒有做出來。。。。。。。。。。。。。。。。

題目(大概好像意思)是:給出一個字串,找出按順序組合成的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) {
        A 
= 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; }
View Code

。。。。。。。。。。。。。。。。。