借鉴柳婼
PAT_B1003题库地址
代码参考柳神,题目原文和链接如上

1003. 我要通过!(20)-浙大PAT乙级真题【题意理解,语文题】1003. 我要通过!(20)-浙大PAT乙级真题【题意理解,语文题】

题目翻译【关键】

答案正确的条件是:必须同时满足两个条件,最后一个是递推【我是翻译君】

  1. 必须仅 == 只有P,A,T三种字符,并且三种字符必须都有。所以,xPATx,PT,Whatever都是NO。
  2. (nA)PAT(nA)正确,n表示A的个数,可以为0。例如:正确的有 PAT,APATA,AAPATAA;错误的有APAT,PATA。两边个数一致
  3. 一个递推关系:
    1. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的。以此为标准(括号表示新的b和c),往下递推。
    2. 如果 aPbATca 是正确的,那么 aP(bA)AT(ca)a 也是正确的。此时,bA表示新的b,ca表示新的c
    3. 如果 aPbAATcaa 是正确的,那么 aP(bAA)AT(caa)a 也是正确的。
    4. 那么 aPb(nA)Tc(na)是正确的

输入输出分析

xPATx,PT,Whatever显然不满足条件1和2,NO
PAT、AAPATAA显然满足条件1和2,YES

由条件12可得,初始状态满足:b=A,a=c否则不满足条件2

公式:aPb(nA)Tc(na),等价于aP(n+1)AT(n+1)a,n+1倍

也就是说P 和 T 之间A的个数,就是T右边和P左边A个数的比例

以下是一些废话和反推过程
那么PAAT、AAPAATAAAA、APAAATAA都可以通过公式 反推 得到初始字符串:

PAAT反推过程:aPb(nA)Tc(na)
因为a=0,b=A,所以n=1,所以c=0
初始字符串:PAT, YES

AAPAATAAAA反推过程:aPb(nA)Tc(na)
因为a=AA,b=A,所以n=1,所以c=AA
初始字符串:AAPATAA,YES

APAAATAA反推过程:aPb(nA)Tc(na)
因为a=A,b=A,所以n=2,所以c=0
初始字符串:APAT,NO

相关文章: