PAT乙級——1003
15931 ワード
PAT乙1003テーマ:私は通過します!(20分) テーマ分析 コード実装 私は合格します!(20点)
「答えが正しい」は、自動判定システムが与える最も喜ばしい返事だ.本題はPATの「答えが正しい」大派送に属する--読み込んだ文字列が以下の条件を満たす限り、システムは「答えが正しい」を出力し、そうでなければ「答えが間違っている」を出力する.
「正解」を得る条件は次のとおりです.文字列には、P、A、Tの3文字しか含まれていない必要があります.他の文字は含まれてはいけません. xPATxのような任意の形の文字列は、xまたは空の文字列、またはアルファベットAのみからなる文字列である「答えが正しい」を得ることができる. aPbTcが正しい場合、aPbATcaも正しい.ここで、a、b、cはいずれも空の文字列、またはアルファベットAのみからなる文字列である.
今すぐPATのために自動審判プログラムを書いて、どの文字列が「答えが正しい」かを判定してください.
入力形式:
各テスト入力には、1つのテスト例が含まれます.1行目は、検出する文字列の個数である正の整数n(<10)を与える.次に、各文字列は1行で、文字列の長さは100を超えず、スペースは含まれません.
出力フォーマット:
各文字列の検出結果は1行を占め、その文字列が「正解」を得ることができればYESを出力し、そうでなければNOを出力する.
テーマ分析
Emmmmm、この問題はまだ少し難しいですが、彼は一定の推理が必要で、結果を達成することができます.条件1と2から私たちは形を知っています.
いずれも正しい、つまり真ん中の1つのAに左右の数を加えたAが成立する.条件3によれば、PAT−はaPbTcにとってacは空であり、bはAである.だからPAATは正しい.aPbATcaは,PAAAAATのように中に何個のAを加えても正しい.APATA--aPbTcにとってabcはAです.aPbATcaなので、APAATAAは正しいです.この時は法則を探して類推する必要がある.Aの個数を観察する必要があります.最初は、PATについて、左のAと右のAは0で、真ん中は1で、左x中=右に続くAPATAで、左中右は1で、左x中=右に続いて、APAATAAで、左1で、中2で、右2で、左x中=右(
コード実装
ACがなくて、18分、1つの用例が通っていないで、しかし私はしばらくどこが考慮していないことを思い付かないで、もし人が発見するならば、私に教えてほしいです.
「答えが正しい」は、自動判定システムが与える最も喜ばしい返事だ.本題はPATの「答えが正しい」大派送に属する--読み込んだ文字列が以下の条件を満たす限り、システムは「答えが正しい」を出力し、そうでなければ「答えが間違っている」を出力する.
「正解」を得る条件は次のとおりです.
今すぐPATのために自動審判プログラムを書いて、どの文字列が「答えが正しい」かを判定してください.
入力形式:
各テスト入力には、1つのテスト例が含まれます.1行目は、検出する文字列の個数である正の整数n(<10)を与える.次に、各文字列は1行で、文字列の長さは100を超えず、スペースは含まれません.
出力フォーマット:
各文字列の検出結果は1行を占め、その文字列が「正解」を得ることができればYESを出力し、そうでなければNOを出力する.
:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
:
YES
YES
YES
YES
NO
NO
NO
NO
テーマ分析
Emmmmm、この問題はまだ少し難しいですが、彼は一定の推理が必要で、結果を達成することができます.条件1と2から私たちは形を知っています.
PAT
APATA
AAPATAA
AAAPATAAA
いずれも正しい、つまり真ん中の1つのAに左右の数を加えたAが成立する.条件3によれば、PAT−はaPbTcにとってacは空であり、bはAである.だからPAATは正しい.aPbATcaは,PAAAAATのように中に何個のAを加えても正しい.APATA--aPbTcにとってabcはAです.aPbATcaなので、APAATAAは正しいです.この時は法則を探して類推する必要がある.Aの個数を観察する必要があります.最初は、PATについて、左のAと右のAは0で、真ん中は1で、左x中=右に続くAPATAで、左中右は1で、左x中=右に続いて、APAATAAで、左1で、中2で、右2で、左x中=右(
, ,
)コード実装
ACがなくて、18分、1つの用例が通っていないで、しかし私はしばらくどこが考慮していないことを思い付かないで、もし人が発見するならば、私に教えてほしいです.
// , NO No, ,
// ,
import java.util.Scanner;
public class Main
{
public static void main(String []args){
// ,P T , 1P2T3 , A 1*2=3
Scanner in = new Scanner(System.in);
int n =in.nextInt();
String input[]=new String[n];
String output[]=new String[n];
for(int i =0;i<n;i++) {
input[i] = in.next();
int count1=0;
int count2=0;
int count3=0;
int countP=0;
int countT=0;
int mark =0;
char temp[] = input[i].toCharArray();
for (int k = 0; k < temp.length; k++) {
mark++;// ,
if(temp[k]!='P'&&temp[k]!='A'&&temp[k]!='T'){
output[i]="NO";
break;
}
if(temp[k]=='P'){
countP++;
if(countT==1&&countP==0){
//T P ,
output[i]="NO";
break;
}
if (countP==2){
//P ,
output[i]="NO";
break;
}
}
if(temp[k]=='T'){
countT++;
if(countP==0||count2==0){
//T P A ,
output[i]="NO";
break;
}
if (countT==2){
//T ,
output[i]="NO";
break;
}
}
if(temp[k]=='A'){
if(countP==0){
count1++;
}
if(countP==1&&countT==0){
count2++;
}
if(countT==1){
count3++;
}
}
}
//count2
if(count1*count2==count3&&count2!=0)
output[i]="YES";
if(mark==temp.length&&count1*count2!=count3)
output[i]="NO";
}
for(int i=0;i<n;i++)
System.out.println(output[i]);
}
}