字符串 投篮

题目描述

小 X 刚把猜先的程序交给少年宫的小朋友就接到了健身教练的电话,教练要求他马上到中天体育馆练习投篮,之所以选择投篮这个项目,主要目的是要在帮助小 X 减肥的同时还能预防颈椎病,小 X 每次必须投满规定的积分才能结束投篮,积分规则是这样的:小 X 每投中一个球得 1 分,如果没投中但球碰到了篮框、篮板或篮网则既不得分也不扣分,如果球啥也没碰到(俗称三不沾)则倒扣 1 分,作为奖励小 X 如能连续投中 3 球则额外加 1 分,如连续投中 4 球则额外加 2 分,依次类推,即连续投中 K 球(K>=3)则额外加 K-2 分,教练每次给小X 计分都很辛苦,于是他要求小 X 设计一个能自动计分的程序,小 X 觉得这个程序也很简单,于是他把这个任务又交给了你!

输入

输入数据共有两行,第一行为一个正整数 n,表示小 X 共进行了 n 次投篮,第二行为一个由 n 个字符组成的字符串,该字符串只包含三种字符,分别是大写字母’V’,’T’,’X’,其中’V’表示投中了, ’T’表示没投中但不用扣分, ’X’表示要扣 1 分。

输出

输出一行仅有一个整数为小 X 的得分。

样例输入 Copy
8
VVVVVTXV
样例输出 Copy
8
提示

【样例解释】
小 X 先连续投中 5 个球,得到 5+3 分,其中 3 分为额外奖励到的。接着第六个球没投中也没扣分,第七个球扣了 1 分, 最后一球得 1 分, 因此答案为 8。

【数据范围】
对于 20%的数据 n<=10
另外 20%的数据不存在连续的 3 个’V’
另外 30%的数据不存在’X’
100%的数据 n<=10000
【来源】
2019年常州市赛

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
const int MX = 1e4;
char c[MX + 10];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int n;
    cin >> n;
    long long score = 0;
    int coh = 1;
    int i;
    cin >> c;
    c[n] ='\0';
    for (i = 0; i <= n; i++)
    {
        if (c[i] == 'V')
        {
            score++;
            if (i >= 1 && c[i-1] == 'V')
            {
                coh++;
            }
        }
        else
        {
            if (c[i] == 'X')
            {
                score--;
            }
            if (coh >= 3)
            {
                score += coh - 2;
            }
            coh = 1;
        }
    }
    cout << score << '\n';
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值