美文网首页
B1003 我要通过! (20分)

B1003 我要通过! (20分)

作者: km15 | 来源:发表于2020-02-08 12:57 被阅读0次

/*
题意:
判断给出的字符串是否PAT

解题:
1、记录p前面的A,P和T中间的A,T后面的A
2、如果中间的A变成一个的时候,需要Y - 1次回退,这时候z - (y - 1)x等于X,就代表程序正确

learn && wrong:
1、别忘了字符串可能压根不是PAT的情况,还有P和T的个数比较多的情况,以及P和T中间没有字符的情况
2、这些排除了,只需要计算那条公式就可以了(有位置推导出A的个数)
3、公式的推导也挺厉害的
4、你写的完全就直接是那条公式,错误多,也没考虑特殊情况
*/

#include <iostream>
#include <cstring>
using namespace std;

int main(int argc, char** argv) {
    int T;
    cin >> T;
    while (T--) {
        char str[110];
        cin >> str;
        int len = strlen(str);

        int num_p = 0, num_t = 0, other = 0;    //代表P的个数、T的个数、除PAT意外其他字符的个数
        int loc_p = -1, loc_t = -1;
        for (int i = 0;i < len;++i) {
            if (str[i] == 'P') {    //若当前字符为P,P的个数+1,位置变为i
                num_p++;
                loc_p = i;
            }
            else if (str[i] == 'T') {
                num_t++;
                loc_t = i;
            }
            else if (str[i] != 'A') other++; //如果不是PAT中的一个,other++
        }

        if ((num_p != 1) || (num_t != 1) || other != 0 || (loc_t - loc_p) <= 1) {
            printf("NO\n");
                continue;
        }

        //x,y,z
        int x = loc_p, y = loc_t - loc_p - 1, z = len - loc_t - 1;  //注意从0开始,需要减一的
        if (z - x * (y - 1) == x) {
            printf("YES\n");
        }
        else {
            printf("NO\n");
        }

    }
    return 0;
}

相关文章

  • B1003 我要通过! (20分)

    /*题意:判断给出的字符串是否PAT 解题:1、记录p前面的A,P和T中间的A,T后面的A2、如果中间的A变成一个...

  • PAT B1003

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下...

  • 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下...

  • 1003 我要通过

    题目链接: https://pintia.cn/problem-sets/994805260223102976/p...

  • 1003 我要通过

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满...

  • 1003 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满...

  • 1003. 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下...

  • 1003.我要通过!

    判断规则 这道题一共有三个规则: 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;任意形如 xPAT...

  • 1003. 我要通过!

    原题链接我要通过!: “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— ...

  • PAT 1003 我要通过!

    这是PAT乙级题库中的第三道题,一开始没有理解题目的第三个条件的意思,可能因为第一次做,所以对命题的意图理解不到,...

网友评论

      本文标题:B1003 我要通过! (20分)

      本文链接:https://www.haomeiwen.com/subject/kjfixhtx.html