PAT 乙级 1003
题目
题目地址:PAT 乙级 1003
题解
规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意;总之这道题要考虑的东西更多,细节上也要特别注意;
规律:“如果 aPbTc 是正确的,那么 aPbATca 也是正确的”,这是理解本题的关键信息,观察之后会发现,当b的字符串里再增加一个A,那么T之后的字符串就会多出a个A(特别注意,这里的 ‘ca’ 实际上是 c + a 个A字符的关系),那么这个关系也就显而易见了,只有在 a * b = c 的条件下,才会有这样的结果,我们再来简单推导一下:
设 a * b = c
由题设条件可知:a * (b + 1) = c + a,再次说明,ca表明有c + a个A
将上式分配可得:a * b + a = c + a…………(1)
又 a * b = c
则 (1) 式成立
通过以上分析可知,本题的字符中的关系就是:a * b = c
在分析完本题最重要的条件之后,还需要在代码过程中注意几点问题;需要说明的是,题目条件中三个条件是层层递进的关系,也就是说只有满足之前的条件才能判断之后的条件;
从以上先决条件推导可得如下两个需要注意的问题:
1. 字符 P 和 T 在一个字符串中只能出现一次;
2. P 和 T 之间必须有字符 A;
因为没有完全理解之前那句话,结果导致没有一次AC(-_-||)
代码
#include <iostream>
#include <string>
using namespace std; int main() {
string str;
int n = ;
int cnta = , cntb = , cntc = ;
bool flagp = false, flagt = false, flaga = false, flagx = false;
cin >> n;
for (int i = ; i < n; i++) {
cin >> str;
for (int j = ; j < str.size(); j++) {
switch (str[j]) {
case 'A':
flaga = true;
if (!flagp && !flagt) cnta++;
else if (flagp && !flagt) cntb++;
else if (flagp && flagt) cntc ++;
break;
case 'P':
if (flagp)
flagx = true;
else
flagp = true;
break;
case 'T':
if (flagt)
flagx = true;
else
flagt = true;
break;
default:
flagx = true;
break;
}
if (flagx) break;
}
if (flagx)
cout << "NO" << endl;
else if (flagp && flagt && flaga && cntb != && cnta * cntb == cntc)
cout << "YES" << endl;
else
cout << "NO" << endl;
cnta = cntb = cntc = ;
flagp = flagt = flaga = flagx = false;
} return ;
}
PAT 乙级 1003的更多相关文章
- 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.我要通过! C++/Java
1003 我要通过! (20 分) 题目来源 “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则 ...
- PAT乙级 1003. 我要通过!(20)
答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. ...
- PAT 乙级1003. 我要通过!(20)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...
- PAT 乙级 -- 1003 -- 我要通过!
题目简述 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正 ...
- PAT 乙级 1003. 我要通过!(20) (C语言描述)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&quo ...
随机推荐
- 前端实现Tab切换栏
tab切换,所需的 UI 只有两组元素 - Header 和 Tab,下面介绍几种不同的实现方法和他们的优缺点 本文主要说一些 CSS 的实现方法.最好的方法是 第四种 => label + i ...
- python学习四(处理数据)
head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-34,3:21,2.34,2.45 ...
- Device
#import "AppDelegate.h" #import "RootViewController.h" @implementation AppDelega ...
- Java并发基础:线程的创建
线程的创建和管理: 1.应用Thread类显式创建.管理线程 2.应用Executor创建并管理线程. 定义任务: 无返回的任务:实现Runnable接口并编写run()方法. 有响应的任务:实现Ca ...
- linux下 ps命令日常
要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top ...
- mstsc远程桌面全频或自定义窗口
近期发现自己的mstsc突然窗口变小,总是要繁琐的拖来拖去,现终于解决了,拿来分享一二! 参数一:mstsc /f 以全屏模式显示(操作一次,后面无需在设置,具体何原因要问微软了,可能是机器的分辨 ...
- (转载)office 2003 gaozhi.msi 缺失提示问题修复
某些GHOST版win7,自带office 2003,每次启动word,它都会提示"稿纸没安装"云云,找不到那个文件.可是我搜遍了硬盘,确实没有那个文件.每次都要点取消,这个提示才 ...
- 在 Windows下用 Visual Studio 编译 OpenSSL 1.1.0
到OpenSSL官方网站下载OpenSSL源代码包 1.下载 openssl-1.1.0.tar.gz 2.安装 ActivePerl, 可以到http://www.activestate.com/a ...
- Windows Phone Emulator 模拟器常用快捷键
在使用Windows Phone 的开发的时候,在目前大家还很难买到真实的Windows Phone 设备的情况下,我们用来调试自己的程序经常用到的可能就是Emulator了.经常会有人问我说,用鼠标 ...
- 【BZOJ1064】[NOI2008] 假面舞会(图上DFS)
点此看题面 大致题意:有\(k\)种面具(\(k\)是一个未知数且\(k≥3\),每种面具可能有多个),已知戴第\(i\)种面具的人能看到第\(i+1\)种面具上的编号,特殊的,戴第\(k\)种面具的 ...