件名の説明:
「正しい答えは、」ほとんどの喜び自動返信文話題与えられたシステムです。このタイトルは「のPATに属して正しい答え」ビッグ配信-ちょうど条件以下の文字列を読んで満たされ、システムが出力されますが、「正しい答え」、それ以外の場合は「出力間違った答えを。」
「ゲット正解」の条件は以下のとおりです。
文字列は、P、A、T 3つの文字、その他の文字を含むことができない必要があります。
そのような文字列として任意の形状をxPATx「正解」を取得、またはxは空の文字列であるか、または唯一の文字によってすることができます文字列は、その;
aPbTcが正しい場合、次にaPbATcaは、式中、a、b、cまたは全て空の文字列、または文字だけからなる文字列正しいです。
今、自動的に「得ることができた文字列を決定する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
問題解決のアイデア:
条件:
- 文字列は3文字の唯一のP、A、Tを持っている必要があり、文字は、他のを含めることはできません。
- 任意の形状の文字列がxPATx「正解」を得ることができ、あるいはxは空の文字列、または文字Aでのみからなる文字列です。
- aPbTcが正しい場合、次にaPbATcaは、正確であり、B、C又は全て空の文字列、または文字のみのA.で構成される文字列
最初の条件:あなたが他の文字を持つことができない、裁判官へのより良いです
第二の条件:xPATx
:説明P、Tおよび一方のみ、AおよびT Aの前のPは、後者に等しいです。
第三の条件:aPbTcが正しい場合、AはA、P及びTの中間であるBを添加し、aPbATca
我々は、PおよびTを押し下げ、その後、中間体Aを追加していき、その後aPbAATcaa
、A Tの数が背面に等しいです。 Pの数は、PとTとの間のフロントの数を乗じ、第2の条件が満たされます。
コード:
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
int n;
int i,a,b,c;
cin>>n;
while (n--) {
cin>>s;
i=a=b=c=0;
if(s=="PAT") {
cout<<"YES"<<endl;
continue;
}
while(s[i]=='A') {
i++;
a++;
}
if(s[i]=='P') {
i++;
while(s[i]=='A') {
i++;
b++;
}
if(s[i]=='T') {
i++;
while(s[i]=='A') {
i++;
c++;
}
if(c==a*b&&b>0) {
cout<<"YES"<<endl;
continue;
}
}
}
cout<<"NO"<<endl;
}
return 0;
}