1003 我要通过!

Posted keep23456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1003 我要通过!相关的知识,希望对你有一定的参考价值。

这道题是一道找规律的题目。第一次做时,看了半天题意看不懂。

技术图片

 

 

第3个条件是第2个条件的一种延申。

对于条件2,AAPATAA“答案正确”,再看条件3,AAPAATAAAA必然“答案正确”

对于条件2,AAPAATAAAA“答案正确”,再看条件3,AAPAAATAAAAAA必然答案正确。

... ...

可以推断出,P左边的A的个数,乘以P与T之间A的个数,等于T右边的A的个数。

注意:空字符串可理解为 空气。

#include"iostream"
using namespace std;
int main() {
    int n;
    cin>>n;
    string str;
    while(n--) {
        cin>>str;
        bool flag = true;
        int posP = -1,posT = -1;//记录P,T的位置
        for(int i = 0; i < str.length(); ++i) {
            if(str[i] == P && posP == -1) {//是P字符并且是第一次出现,则记录下标
                posP = i;
            } else if(str[i] == T && posT == -1) {//是T字符并且是第一次出现,则记录下标
                posT = i;
            } else if(str[i] == A) { //是A字符则跳过
                continue;
            } else { //如果出现多个P,或者多个T,或者非P,A,T字符,则结束判断
                flag = false;
                break;
            }
        }
        //P或者T不存在,或者P在T的后面,或者PT之间没有A
        if(flag == false ||posP == -1 || posT == -1 ||posP > posT || posT-posP == 1)
            printf("NO
");
        else {
            int x = posP;//表示字符P左边共有x个字符A
            int y = posT-posP - 1;//表示字符P与T之间共有y个字符A
            if(x*y == str.length() - posT - 1)
                printf("YES
");
            else
                printf("NO
");
        }
    }
    return 0;
}

 

以上是关于1003 我要通过!的主要内容,如果未能解决你的问题,请参考以下文章

JAVA1003 我要通过!(20分) PAT乙级 PAT (Basic Level)Practice (中文)

PTA-1003 我要通过!

1003.我要通过!(20)

[PAT Basic] 1003.我要通过!

1003 我要通过!

1003 我要通过!*