• 也不知道 为什么没通过 -------------存疑 ---延后解决


    #include <iostream>
    #include<string>
    using namespace std;
    int main()
    {
    /*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*/

    //输入 数据采集
    //个数
    int count = 0;
    //数据数组
    string arr[10];
    //数据 对应判断值
    string flag[10];
    string arr_temp[10];
    cin >> count;
    cin.get();//获取换行
    //取数据
    for (int i = 0; i < count; i++)
    {
    string temp;
    getline(cin, temp);
    arr[i] = temp;


    }
    //1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
    for (int i = 0; i < count; i++)
    {
    string temp;
    temp = arr[i];
    for (int j = 0; j < arr[i].length(); j++)
    {
    if (temp[j] == 'P' || temp[j] == 'A' || temp[j] == 'T')//只包含 P A T
    {
    }
    else
    {
    flag[i] = "NO";
    }
    }


    }

    //2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
    //空字符串---即PAT三个字母
    for (int i = 0; i < count; i++)
    {
    string a = "";
    string b = "";
    string c = "";
    string temp="";
    if (arr[i] == "PAT")//空字符串--正确
    {
    flag[i] = "YES";
    }
    if (flag[i]=="YES"|| (flag[i] != "NO"&&arr[i].length()>3))//是A判断是否---正确
    {

    int j = 0;
    int k = arr[i].length() - j - 1;
    while (arr[i][j] == 'A'&&arr[i][j] == arr[i][k])
    {
    j++;
    k= arr[i].length() - j - 1;
    }
    if (flag[i] == "YES" || (k - j == 2 && arr[i][j] == 'P'&&arr[i][j + 1] == 'A'&&arr[i][j + 2] == 'T'))
    {
    flag[i] = "YES";
    //获取a
    int t = 0;
    while (arr[i][t] == 'A'&&t<arr[i].length())
    {
    a += 'A';
    t++;
    }
    while (arr[i][t + 1] == 'A'&&t<arr[i].length())
    {
    b += 'A';
    t++;
    }
    int kk = arr[i].length() - 1;
    while (arr[i][kk] == 'A')
    {
    c += 'A';
    kk--;
    }
    }
    temp = a + "P" + b + "AT" + c + a;
    for (int q = i+1; q < count; q++)
    {
    if (arr[q] == temp&&temp!=""&&flag[q]!="NO")
    {
    flag[q] = "YES";
    }
    }
    }

    }
    //不是yes 置为no
    for (int i = 0; i < count; i++)
    {
    if (flag[i] != "YES")
    {
    flag[i] = "NO";
    }
    }
    for (int i = 0; i < count; i++)
    {
    cout << flag[i] << endl;
    }


    getchar();
    getchar();

    return 0;
    }

  • 相关阅读:
    跨域是什么
    【剑指offer】05-替换空格
    【剑指offer】04-二维数组中的查找
    【剑指offer】03-变态跳台阶
    【剑指offer】02-青蛙跳台阶
    【剑指offer】01-斐波那契数列
    python面向对象-类和实例
    LibreOffice字体问题解决;从window复制到Ubuntu
    Far manager界面混乱问题解决
    Ubuntu-18.04.2-几个启动错误解决办法
  • 原文地址:https://www.cnblogs.com/linxuemufeng/p/8095316.html
Copyright © 2020-2023  润新知