• 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;
    }

  • 相关阅读:
    JQuery 快速入门一篇通
    Winform 显示Gif图片
    MD5编码工具类 MD5Code.java
    Asp.Net 上传图片并生成高清晰缩略图
    winform时钟c#代码
    PHP面试题汇总
    PHP条件语句语法与示例
    Android声音播放实例代码
    html和js基础功能代码备份
    纯C#实现屏幕指定区域截屏
  • 原文地址:https://www.cnblogs.com/wshyj/p/6287465.html
Copyright © 2020-2023  润新知