免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
1003で私がしたいです!(20点)
「正しい答えは、」ほとんどの喜び自動返信文話題与えられたシステムです。このタイトルは「のPATに属して正しい答えだけで、システムは」出力をします、以下の条件が満たされている文字列を読んで- 「ビッグ配達正しい答えは」、それ以外の場合は出力「間違った答えを。」
「ゲット正解」の条件は以下のとおりです。
- 文字列のみを持っている必要があります
P
、A
、T
3つの文字が他の文字を含めることはできません。 - 以下のような任意の形状
xPATx
の文字列は、「取得することができ、正しい答えをここで、」x
いずれかの空の文字列、または唯一の文字でA
、その文字列。 - あなたがいる場合
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;
}