数牛(cow)---讲解

题目:

我们的老朋友晨晨无意中在她最喜欢的放牧场地中央发现一个刻在一块大石头上面的耐人寻味的碑文。碑文的文字似乎是一种神秘古老的语言。这种语言总共只有三个大字 C,O 和 W。尽管晨晨无法破译这种语言,但她看到 C,O 和 W 按顺序形成她最喜欢的一句话 COW,她还是会很爽很爽,于是她想知道 COW 在这段碑文中总共出现了多少次。如果有 COW 中穿插了其他字符,但是字符 C,O,W 按照正确的顺序出现 Bessie 不会介意。如果不同的例如,COW 在 CWOW 中出现一次,在 CCOW 中出现两次,在 CCOOWW 中出现 8 次 。由于碑文的内容太过于深奥,晨晨看了头脑发胀,于是她找到了聪明的你,请你帮晨晨找出 COW 出现多少次。

输入:

第一行包含一个整数 N <= 100000。 

第二行包含字符串的 N 个字符,每个字符是一个 C,O,或W

输出:

一个整数代表 COW 出现多少次(COW 不一定要连续出现,按顺序出现也算作出现一次)。

题解:

这题要求出“COW”出现过多少次。用for循环来统计就好了,这是答题思路。

那么如何用for循环统计呢?下面我来详细说一下:

首先,我们先找C,如果找到了C,就统计累加。

接着,我们找O,找到了O是直接累加吗?当然不是。如果我们找到了O那肯定是按照C的数量来,因为如果O比C多,那么就只能凑出少的数量的COW,所以要参照C的数量。

以此类推,W要按照O的数量。

代码:

#include<bits/stdc++.h>
using namespace std;
long long n,c,o,w;
string a;
int main(){
    cin>>n>>a;
    for(int i=0;i<a.size();i++){
        if(a[i]=='C')c++;
        if(a[i]=='O')o+=c;
        if(a[i]=='W')w+=o;
    }
    printf("%lld",w);
    return 0;
} 

谢谢观看 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值