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

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/chen_zan_yu_/article/details/102689439

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

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

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

  1. 文字列のみを持っている必要があります  P、  A、  T3つの文字が他の文字を含めることはできません。
  2. 以下のような任意の形状  xPATx の文字列は、「取得することができ、正しい答えをここで、」  x いずれかの空の文字列、または唯一の文字で  A 、その文字列。
  3. あなたがいる場合  aPbTc 正しい、そして  aPbATca それは、正しいこと  a、  b、  c 空の文字列、または唯一の文字のいずれかである  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
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        string s;
        cin>>s;
        int len=s.size();
        int num_p=0,num_t=0,other=0;
        int loc_p=-1,loc_t=-1;
        for(int i=0; i<len; i++)
        {
            if(s[i]=='P')
            {
                num_p++;
                loc_p=i;
            }
            else if(s[i]=='T')
            {
                num_t++;
                loc_t=i;
            }
            else if(s[i]!='A')
            {
                other++;
            }
        }
        if(num_p!=1||num_t!=1||(other!=0)||(loc_t-loc_p)<=1)
        {
            printf("NO\n");
            continue;
        }
        int x=loc_p;
        int y=loc_t-loc_p-1;
        int z=len-loc_t-1;
        if(z-x*(y-1)==x)
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }

    }

    return 0;
}

 

おすすめ

転載: blog.csdn.net/chen_zan_yu_/article/details/102689439