PAT乙1003
这次终于觉得智商不够用了,特么的。
总结给你的经验,对于这样字符串的题目,经常会出现一种叫做递归定义的东西。
还有一种叫做,相同的字母表示相同的字符串。
这道题目一共有三个条件。
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的更多相关文章
- PAT甲级1003. Emergency
PAT甲级1003. Emergency 题意: 作为一个城市的紧急救援队长,你将得到一个你所在国家的特别地图.该地图显示了几条分散的城市,连接着一些道路.每个城市的救援队数量和任何一对城市之间的每条 ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
- 图论 - PAT甲级 1003 Emergency C++
PAT甲级 1003 Emergency C++ As an emergency rescue team leader of a city, you are given a special map o ...
- PAT乙级--1003
1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue "答案正确"是 ...
- PAT乙级1003
1003 我要通过! (20 point(s)) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”, ...
- [C++]PAT乙级1003. 我要通过!(17/20)
/* 1003. 我要通过!(20) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错 ...
- PAT 乙级 1003 我要通过!(20) C++版
1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue “答案正确”是自动判题系统给出的最 ...
- 【PAT】1003. 我要通过!(20)
1003. 我要通过!(20) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. ...
- PAT Basic 1003
1003 我要通过! “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答 ...
随机推荐
- Oracle 获取当天数据
where trunc(to_date(DATETIME,'yyyy-MM-dd hh24:mi:ss'))=trunc(sysdate)
- java操作cookies
建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下 HttpServletRequest request HttpServletResponse response Co ...
- webform在页面生成的代码与事件回传
<script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1'] ...
- 解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载
解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h( ...
- hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4718 题意:给你一棵树,每个节点有一个值,然后任给树上的两点,问这两点的最长连续递增区间是多少 题解: ...
- java返回json数据日期为一串数字字符串 js 转义
var time = "2514484555"; //这只是事例,并不是实际的数据 function timeToString(time) { var datetime = new ...
- crossdomain 可用
<cross-domain-policy> <allow-access-from domain="*"/> <allow-http-request-h ...
- 安卓获取线程id
错误的做法: @Override public void onCreate() { mContext = getApplicationContext(); mHandler = new Handler ...
- VMware 全虚拟打开
1.修改.vmx 文件,最后一行加入: hypervisor.cpuid.v0 = “FALSE" mce.enable = “TRUE" vhv.enable = “TRUE&q ...
- Android 获取 AudioRecord 麦克风音量大小并做选择性发送
extends:http://blog.csdn.net/alvinhuai/article/details/8955127,http://mikespook.com/2010/11/android- ...