码迷,mamicode.com
首页 > 其他好文 > 详细

1003 我要通过!

时间:2020-02-15 15:43:57      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:存在   return   条件   int   表示   als   span   cin   mes   

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

技术图片

 

 

第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\n");
        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\n");
            else
                printf("NO\n");
        }
    }
    return 0;
}

 

1003 我要通过!

标签:存在   return   条件   int   表示   als   span   cin   mes   

原文地址:https://www.cnblogs.com/keep23456/p/12311996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!