1003で私がしたいです!(20点)

正しい答えは、」ほとんどの喜び自動返信文話題与えられたシステムです。このタイトルは「のPATに属して正しい答え」ビッグ配信-ちょうど条件以下の文字列を読んで満たされ、システムが出力されますが、「正しい答え」、それ以外の場合は「出力間違った答えを。」

「ゲット正解」の条件は以下のとおりです。

  1. 文字列のみを持っている必要がありますPAT3つの文字が他の文字を含めることはできません。
  2. 以下のような任意の形状xPATxの文字列は、「取得することができ、正しい答えをここで、」xいずれかの空の文字列、または唯一の文字でA、その文字列。
  3. あなたがいる場合aPbTc正しい、そしてaPbATcaそれは、正しいことabc空の文字列、または唯一の文字のいずれかであるA構成文字列。

今、自動的に「得ることができた文字列を決定するPATの審判プログラムを書くように頼む正解です」。

入力フォーマット:

各テストは、テスト入力を含みます。ライン1は正の整数で与えられるN-(<10)、検出すべき文字列の数です。次に、各列に対して1つの行ではなく、100以上の文字列の長さ、スペースなし。

出力フォーマット:

文字列は「得ることができる場合、各文字列の検出結果の行、正しい答え」、出力YES、それ以外の出力をNO

サンプル入力:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

      
    

出力例:

YES
YES
YES
YES
NO
NO
NO
NO

コード

// b1003-我要通过!.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// PAT  APATA AAPATAA  AAAPATAAA AAAAPAATAAAAAAAA
// 由题意可知,p前面的A的个数①乘以中间的A的个数②等于后面的A的个数③

#include <iostream>
using namespace std;

bool judge(string str) {
    int a1 = 0, a2 = 0, a3 = 0;//统计三个位置a的个数
    int p = 0, t = 0;

    for (int i = 0; i < str.length(); i++) {
        if (p == 0) {
            //第一段
            if (str[i] == 'A') {
                a1++;
            }
            else if (str[i] == 'P') {
                p = 1;
            }
            else {
                return false;
            }
        }
        else {
            if (t == 0) {
                //中间那段
                if (str[i] == 'A') {
                    a2++;
                }
                else if (str[i] == 'T') {
                    t = 1;
                }
                else {
                    return false;
                }
            }
            else {
                //最后一段
                if (str[i] == 'A') {
                    a3++;
                }
                else {
                    return false;
                }
            }
        }
    }
    if (a2 < 1) {
        return false;
    }
    if (a1 * a2 == a3) {
        return true;
    }
    else {
        return false;
    }
}

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        string str;
        cin >> str;
        if (judge(str)) {
            cout << "YES"<<endl;
        }
        else {
            cout << "NO" << endl;
        }
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/ericling/p/12325482.html