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 我要通过!的主要内容,如果未能解决你的问题,请参考以下文章