C++版 - UVa1585 Score - 题解

本文介绍了一道算法竞赛题目UVa1585Score的解决方法,该题要求统计由O和X组成的字符串中O的得分。通过遍历字符串并使用计数器实现,最终成功提交并通过评测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++版 - UVa1585 Score - 题解

《算法竞赛入门经典(第二版)》
习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585)

问题描述:
给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如:OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3。

Sample Input

5   
OOXXOXXOOO  
OOXXOOXXOO  
OXOXOXOXOXOXOX  
OOOOOOOOOO  
OOOOXOOOOXOOOOX

Sample Output

10
9
7
55
30

在线提交:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=submit_problem&problemid=4460

思路:
扫描当前行的字符串,如果遇到字符’O’就让计数器count增加1,然后将count加入到sum中,如果遇到’X’,则需将count置为0.

已AC代码:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    int numOfLines;
    cin >> numOfLines;
    if (numOfLines <= 0)
        return 0;

    while (numOfLines--)
    {
        string s;
        cin >> s;
        int sum = 0;
        int count = 0;
        int len = s.size();
        for (size_t i = 0; i < len; i++)
        {
            if (s[i] == 'O')
            {
                count++;
                sum += count;
            }
            else
                count = 0;
        }
        cout << sum << endl;
    }

    return 0;
}

Runnig result:

#ProblemVerdictLanguageRun TimeSubmission Date
219516891585ScoreAcceptedC++110.0002018-09-13 06:18:15

转载于:https://www.cnblogs.com/enjoy233/p/10408660.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值