PAT1003

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

得到“答案正确”的条件是:

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

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

输入样例:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

输出样例:

YES
YES
YES
YES
NO
NO
NO
NO

仍有两个错误点:已知测试数据 PAT出问题,但找不出代码问题

模拟题意可知 ------满足题意的字符串有 xPATx  或 xPAATxx 两种

# include<iostream>
# include<string>
# include<stdio.h>
using namespace std;
int main()
{
string x,x1,x2,s;
int n,i,j;
cin>>n;
getchar();  ///吸收回车
while(n--)
{
int flag=0,h=0;
bool k=true;
getline(cin,s);  //含空格的输入
for(i=0;i<s.length();i++)     //i作为一个标志  PAT与前面字符串x 的标准
{
if(s[i]==‘P‘ && s[i+1]==‘A‘ && s[i+2]==‘T‘ && (i+2)<s.length() )  ////核心条件:有PAT才有可能为真
{
flag=1;  //方式一
j=i+3;   //j作为一个标志 PAT与后面字符串 的标志
break;
}
if(s[i]==‘P‘ && s[i+1]==‘A‘ && s[i+2]==‘A‘ &&s[i+3]==‘T‘ && (i+3)<s.length() )  ////核心条件:有PAAT才有可能为真
{
flag=2;
j=i+4;
break;
}
}
if(i==s.length()) ///如果没有PAAT 或PAT 一定为假
{
k=false;
}

if(k==true)   ////只有为真 才有必要进行以下判断操作
{
for(h=0;h<i;h++)
{
x[h] = s[h];   //把PAT前面的字符串存入x
}
for(h=j;h<s.length();h++)
{
x1[h] = s[h];  //把PAT后面的字符串存入x1
}
}

if(k==true)  ////这一部分的功能是判断前面的字符串是否仅含有A或 空格   
{
if(x[0]== ‘A‘) 
{
for(h=1;h<i;h++)
{
if(x[h] != ‘A‘)
{
k = false;break;
}
}

if(k==true)
{
for(h=0;h<2*i;h++)  ///这一部分是为了方案2准备
{
x2[h]=‘A‘;
}
}
}
else if(x[0]==‘ ‘)
{
for(h=1;h<i;h++)
{
if(x[h] != ‘ ‘)
{
k = false;break;
}
}

if(k==true)
{
for(h=0;h<2*i;h++)
{
x2[h]=‘ ‘;
}
}

}
else
{
k = false;
}
}

if(k==true)
{
if(flag==1)//如果是PAT
{
if(x != x1)
{
k = false;
}
}

if(flag==2)//如果是PAAT
{

if(x2 != x1)
{
k = false;
}
}
}

if(i==0 && j==s.length()) //如果恰好为PAT PAAT 结果也为真
{
k = true;
}

if(k==true)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
return 0;
}

时间: 2024-10-03 21:41:36

PAT1003的相关文章

PAT1003 我要通过!

"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确",否则输出"答案错误". 得到"答案正确"的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符:2. 任意形如 xPATx 的字符串都可以获得"答案正确",其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串:3.

PAT-1003

1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符:2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串:3

PAT1003——我要通过!

“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符:2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串:3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是

PAT1003—— Emergency

As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities are

PAT1003. Emergency (25)

As an emergency rescue team leader of a city, you are given a special map of your country.  The map shows several scattered cities connected by some roads.  Amount of rescue teams in each city and the length of each road between any pair of cities ar

PAT1003我要通过!(20)

"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确",否则输出"答案错误". 得到"答案正确"的条件是: 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符: 任意形如 xPATx 的字符串都可以获得"答案正确",其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串: 如果 aPb

pat1003 迪杰斯特拉法和dfs求最短路

本题的背景是求定点和定点之间的最短路问题,方法手段来自数据结构课程中的迪杰斯特拉算法和dfs(深度优先遍历). 分别用两种方法编程如下代码 dfs #include <iostream> #include <cstring> #include <cstdio> using namespace std; #define maxv 510 bool visit[maxv]; int arc[maxv][maxv];//邻接矩阵 int M,N,C1,C2; //M总顶点数,

最短路径——dijkstra算法(Java)

在刷题的过程中常常会遇到求最短路径的问题,在求无权图的问题中我们常常使用BFS来求其最短路径,而BFS无法解决网(有权图)中的问题,我们解决网中的最短路径常常使用dijkstra算法来求解. dijkstra算法是一种贪心的思想,具体其正确性的证明,这里就不再赘述.下面来直接讲解如何使用dijkstra算法: 1.我们在使用dijkstra算法时为了其编写的便捷性一般使用邻接矩阵来描述一个图.并将邻接矩阵中每个元素的值初始化为无穷大(或者很大很大的值).之后根据图中的结构加入数字,称这个矩阵为E