危険な状態の文字列を取得する4つのフットボールマッチ説明を行使する

:ために書かれhttp://codeforces.com/problemset/problem/96/A

タイトル説明

サッカーの非常に好きリンリン。
ある日、リンリンはリンリンが紙の上のすべてのアスリートの現在の位置を書き留めて、同時にゲームを見て、サッカーの試合を見ていました。
文字「0」と「1」のみ1つの文字列記述子によってリンリンに減少し、すべての選手の位置の説明を、簡単にするために。
それぞれの「0」がプレイヤーのホームチームを示し、それぞれ「1」は訪問チームの選手ということを示しています。
現在の位置で連続7人の選手が同じチームであった場合、我々はこの状態が危険な状態と呼ばれます。
たとえば、状態が「00100110111111101」危険な状態であり、かつ状態「11110111011101」は危険な状態ではありません。
現在のリンリンは、すべてのプレイヤーの位置を描写あなたを与えるために、状態が危険な状態ではないことを確認してください。

入力形式

入力はすべての選手をリンリン示す位置を表す文字列が含まれています。(文字列の長さは100を超えません)

出力フォーマット

全選手の位置は、出力「YES」危険な状態であれば、そうでない場合、出力「NO」。

サンプル入力1

001001

サンプル出力1

NO

サンプル入力2

1000000001

サンプル出力2

YES

トピック分析

この質問は、実際に、それはあなたの文字列s、文字列は7連続する「0」または連続7存在しない決定を与えることで、明白である「1」
だから我々は、変数cnt記録するために起動することができます。
私たちは現在、文字列の前に横断し、文字列が同じではありません(または現在の文字列が0の最初の文字列である)ときはいつでも、私たちは1に設定されたCNTを、
私たちは現在を行き来するたびに文字列と文字列、前のように、我々は++を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");
}

以下を達成するために、コードの文字列を使用します:

#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;
}

おすすめ

転載: www.cnblogs.com/zifeiynoip/p/11450573.html