这次终于觉得智商不够用了,特么的。

总结给你的经验,对于这样字符串的题目,经常会出现一种叫做递归定义的东西。

还有一种叫做,相同的字母表示相同的字符串。

这道题目一共有三个条件。

1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

其中,最重要的是第三个定义。

1、第一次读这条定义,那么需要满足第二条定义,那么b只可能是A,a和c必定相等,所以你能得到只有一种XPAATXX正确的错觉。

2、但是重点来了,XPAATXX的形式正确了,那么它又可以代入第三个条件了。

3、也就是说中间再加一个A,变成XPAAATXXX,这样的形式也就正确了。

这就是传说的递归定义。

其实树本身也是一种递归的定义。这里就不多说了。其实和这个的思想是一样的。

这道题目坑就坑在这里了。所以对于字符串的题目一定要小心这一点,很容易栽。

下面的代码仅仅是为了凑字数哦,写的超级烂,因为题目的意思经过一波三折,所以改动的太多,最后就成这副面目全非的样子了,好同学看到这里就可以了。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<string.h> using namespace std; int main()
{
char ch[];
int n,i,flag;//flag:0最前面,1P之后,2A之后,3T之后
int aN = ;//中间A的个数
int aNU = ;//前面A的个数
int aNUM = ;//后面A的个数
int len;
scanf("%d\n",&n);
while (n--)
{
flag=;
aN =;
aNU=;
aNUM=;
gets(ch);
len = strlen(ch);
for (i = ; i < len; i++)
{
if(flag == && ch[i] == 'P')
{
flag = ;
continue;
}
else if(flag == && ch[i] == 'A')
{
aNU++;
continue;
}
else if(flag == && ch[i] == 'A')
{
aN++;
flag = ;
continue;
}
else if(flag == && ch[i] != 'A')
{
break;
}
else if(flag == && ch[i] == 'T')
{
flag = ;
continue;
}
else if(flag == && ch[i] == 'A')
{
aN++;
continue;
}
else if(flag == && ch[i] != 'A')
{
flag = ;
break;
}
else if(flag == && ch[i] == 'A')
{
aNUM++;
continue;
}
break;
}
if(flag == && aN == && aNU != aNUM)
cout<<"NO"<<endl;
else if(flag == && aN == && aNU == aNUM)
cout<<"YES"<<endl;
else if(flag == && aN*aNU == aNUM)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return ;
}

PAT乙1003的更多相关文章

  1. PAT甲级1003. Emergency

    PAT甲级1003. Emergency 题意: 作为一个城市的紧急救援队长,你将得到一个你所在国家的特别地图.该地图显示了几条分散的城市,连接着一些道路.每个城市的救援队数量和任何一对城市之间的每条 ...

  2. PAT 乙级 1003

    题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...

  3. 图论 - PAT甲级 1003 Emergency C++

    PAT甲级 1003 Emergency C++ As an emergency rescue team leader of a city, you are given a special map o ...

  4. PAT乙级--1003

    1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue "答案正确"是 ...

  5. PAT乙级1003

    1003 我要通过! (20 point(s)) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”, ...

  6. [C++]PAT乙级1003. 我要通过!(17/20)

    /* 1003. 我要通过!(20) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错 ...

  7. PAT 乙级 1003 我要通过!(20) C++版

    1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue “答案正确”是自动判题系统给出的最 ...

  8. 【PAT】1003. 我要通过!(20)

    1003. 我要通过!(20) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. ...

  9. PAT Basic 1003

    1003 我要通过! “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答 ...

随机推荐

  1. Oracle 获取当天数据

    where trunc(to_date(DATETIME,'yyyy-MM-dd hh24:mi:ss'))=trunc(sysdate)

  2. java操作cookies

    建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下 HttpServletRequest request HttpServletResponse response Co ...

  3. webform在页面生成的代码与事件回传

    <script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1'] ...

  4. 解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载

    解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h( ...

  5. hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4718 题意:给你一棵树,每个节点有一个值,然后任给树上的两点,问这两点的最长连续递增区间是多少 题解: ...

  6. java返回json数据日期为一串数字字符串 js 转义

    var time = "2514484555"; //这只是事例,并不是实际的数据 function timeToString(time) { var datetime = new ...

  7. crossdomain 可用

    <cross-domain-policy> <allow-access-from domain="*"/> <allow-http-request-h ...

  8. 安卓获取线程id

    错误的做法: @Override public void onCreate() { mContext = getApplicationContext(); mHandler = new Handler ...

  9. VMware 全虚拟打开

    1.修改.vmx 文件,最后一行加入: hypervisor.cpuid.v0 = “FALSE" mce.enable = “TRUE" vhv.enable = “TRUE&q ...

  10. Android 获取 AudioRecord 麦克风音量大小并做选择性发送

    extends:http://blog.csdn.net/alvinhuai/article/details/8955127,http://mikespook.com/2010/11/android- ...