zoukankan      html  css  js  c++  java
  • 寻找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

    。。。。。如果有错,欢迎指错。。。。。。。。。。。。

  • 相关阅读:
    除下草并推荐PhantomJS
    GTAC 2013
    Benchmark感受
    ChinaTest第二天
    "西厂"、"东厂"照片
    谈面试上
    mysql基本常用命令(转)
    java学习笔记数据类型、运算符和控制语句
    java学习笔记第一个applet程序以及一个小问题的解决
    网上阅卷系统自动识别功能代码
  • 原文地址:https://www.cnblogs.com/hello-dummy/p/13239019.html
Copyright © 2011-2022 走看看