OCAC暑期比赛第一场 D题 足球比赛中的危险状态 题解

Posted ocac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OCAC暑期比赛第一场 D题 足球比赛中的危险状态 题解相关的知识,希望对你有一定的参考价值。

足球比赛中的危险状态
原题链接:http://codeforces.com/problemset/problem/96/A
【题目描述】
灵灵非常喜欢足球。
有一天,灵灵正在看一场足球比赛,在看比赛的同时灵灵在纸上写下了每一位运动员当前的位置。
为了简化所有运动员的位置的描述,灵灵将其简化成了仅由字符 "0" 和 "1" 描述的一个字符串。
每一个 "0" 表示主队的一个运动员,每一个 "1" 表示客队的一个运动员。
如果当前的位置中存在连续的7个运动员是同一个队伍的,那么我们将这个状态称为危险状态。
举个例子,状态 “00100110111111101” 是危险状态,而状态 “11110111011101” 不是危险状态。
给你一个当前灵灵描绘出来的所有运动员的位置,请确认这个状态是不是危险状态。
【输入格式】
输入包含一个字符串,用于表示灵灵描绘出的所有运动员的位置。(字符串长度不会超过100)
【输出格式】
如果所有运动员的位置是一个危险状态,输出“YES”;否则,输出“NO”。
【样例输入1】
001001
【样例输出1】
NO
【样例输入2】
1000000001
【样例输出2】
YES
【问题分析】
这道题目很明显了,其实就是给你一个字符串 s ,确定字符串中是不是存在 7 个连续的 "0" 或者 7 个连续的 "1"。
所以我们可以开一个变量 cnt 来记录:
每当我们当前遍历的字符串和前一个字符串不一样(或者当前字符串是第0个字符串),我们将 cnt 置为 1;
每当我们当前遍历的字符串和前一个字符串一样,我们将 cnt ++;
如果某一个时刻 cnt >= 7,则说明是危险状态;如果遍历完字符串 cnt 都没能达到 7,则说明不是危险状态。
使用 char 数组实现的代码如下:

#include <bits/stdc++.h>
using namespace std;

char ch[110];
int cnt;

int main() 
    cin >> ch;
    for (int i = 0; ch[i]; i ++) 
        if (!i || ch[i] != ch[i-1]) cnt = 1;
        else 
            cnt ++;
            if (cnt >= 7) 
                puts("YES");
                return 0;
            
        
    
    puts("NO");

 使用 string 实现的代码如下:

#include <bits/stdc++.h>
using namespace std;

string s;
int cnt;

int main() 
    cin >> s;
    int n = s.length();
    for (int i = 0; i < n; i ++) 
        if (!i || s[i] != s[i-1]) cnt = 1;
        else 
            cnt ++;
            if (cnt >= 7) 
                puts("YES");
                return 0;
            
        
    
    puts("NO");
    return 0;

 

以上是关于OCAC暑期比赛第一场 D题 足球比赛中的危险状态 题解的主要内容,如果未能解决你的问题,请参考以下文章

OCAC暑期比赛第一场 J题 星球语言的翻译 题解

OCAC暑期比赛第一场 H题 聊天室 题解

OCAC暑期比赛第一场 G题 男孩或者女孩 题解

OCAC暑期比赛第一场 E题 有用的数学 题解

OCAC暑期比赛第一场 L题 判断素数 题解

OCAC暑期比赛第一场 K题 最大公约数 题解