---恢复内容开始---
如果做题的人学过编译原理就好了。这题其实定义了一种字符串或者说是定义了一种“语言”。用编译中文法那一套东西就是
s-> XPATX
X-> $ | AX
XPATX-> XPAATXX
其中s是开始符,P,A,T是终止符。
用一句话描述就是P前面A的个数 × P和T中间A的个数 = T后面A的个数,而且P,A,T至少出现一次。
(java学的不好,代码就凑合着看吧)
import java.util.*; public class Main{ public static void main(String argu[]){ Scanner read = new Scanner(System.in); int cont = 0; String in = ""; String ans = ""; if(read.hasNext()){ cont = read.nextInt(); read.nextLine(); } //System.out.print(cont); int p = 0, a= 0, t = 0, flag = 1; while(cont >= 0){ p = 0; a = 0; t = 0; flag = 1; in = read.nextLine(); for(int i=0; i<in.length(); ++i){ if(in.charAt(i) == 'P'){ p = i; }else if(in.charAt(i) == 'T'){ t = in.length() - i - 1; a = i - p - 1; }else if(in.charAt(i) == 'A'){ }else{ ans = "NO"; flag = 0; //System.out.print(in.charAt(i)); break; } } if(p * a == t && flag == 1 && a >= 1){ ans = "YES"; }else{ ans = "NO"; } cont --; System.out.println(ans); } } }
---恢复内容结束---