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的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答 ...
随机推荐
- 嵌套json的查询
postgres=# SELECT t.data->'objects'->1->'src' AS ctFROM reports as t , json_array_el ...
- android开发注意点
一.Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名.静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能 ...
- C# 网上收集的一些所谓的开源项目
C#开源 商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7- ...
- [转载]Linux 环境下编译 0.11版本内核 kernel
最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...
- 如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”
.选择文件[XP操作系统,不能用于Win2000或98],使用“UserAccounts.CommonDialog”对象向用户显示一个标准的“文件打开”对话框 Set objDialog = Crea ...
- Javascript:scrollWidth,clientWidth,offsetWidth的区别(转)
网页可见区域宽:document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域高:document.body.offsetW ...
- windows 装 centos
windows下压缩一下空间 直接装centos 找到分配给linux的/boot目录,然后修改grub/menu.lst文件,更换一下位置即可
- spring security 3中的10个典型用法小结
spring security 3比较庞大,但功能很强,下面小结下spring security 3中值得 注意的10个典型用法 1)多个authentication-provide可以同时使用 &l ...
- blob的存储与读取
对于oracle数据库的blob的存储与读取对应的是byte数组. 将blob类型数据存入数据库: String blob: byte[] byte = blob.getBytes(); entity ...
- css float 布局
.clearfix:after { content: ''; display: table; clear: both; } .clearfix {; }