足球比赛中的危险状态
原题链接: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; }
原文地址:https://www.cnblogs.com/ocac/p/11113425.html