• 【pat】1003 我要通过!


    分析
    1.只能包含P、A、T
    2.xPATx — x或空或A的字符串
    所以以下情况是合理的:PAT AAPATAA AAAPATAAA
    3.如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
    以此类推…
    PAT正确 — PAAT正确 — PAAAT正确…
    AAPATAA正确 — AAPAATAAAA正确 – AAPAAATAAAAAA正确…
    AAAPATAAA正确 — AAAPAATAAAAAA正确 — AAAPAAATAAAAAAAAA正确…

    此题我试过很多种限制,最后冲浪解锁出的结论是…
    (left)P(mid)T(right) (left、mid、right为左边、中间、右边A的个数),必须满足:
    1.中间必须有A —— mid >= 1
    2.右边A的个数 = 左边A的个数*中间A的个数 —— right = left * mid(想不到这竟是道找规律的题目smile:))
    3.因为b,c,x要么为空,要么为A的字符串,所以left、right != 1——简化为left != 1

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main(){
    	int n,i,j,len;
    	string str;
    	int left, mid, right; //左边、中间、右边的A的个数
    	cin >> n;
    	while(n--){
    		int flag = 0;
    		cin >> str;
    		len = str.size();
    		for(i=0;i<len;i++){
    			if(str[i]!='P'&&str[i]!='A'&&str[i]!='T'){
    				flag = 1;
    			}
    			if(str[i] == 'P')
    			{
    				left = i;
    			}
    			if(str[i] == 'T'){
    				mid = i-left-1;
    			}
    		}
    		right = len - left - mid -2;
    		//cout << left << mid << right << endl;
    		if( mid >= 1 && right == left*mid && left !=1 ){
    			flag = 0;
    		}else{
    			flag = 1;
    		}
    
    		if(flag == 1){
    			cout << "NO" << endl;
    		}else{
    			cout << "YES" << endl;
    		}
    	}
    	
    }
    
  • 相关阅读:
    VMI
    jsp环境搭建(Windows)
    128M小内存VPS优化与typecho环境搭建
    Shell字符串
    bash和sh区别
    PHPDocument 代码注释规范总结
    PHP 程序员的技术成长规划
    JavaScript:JSON
    mongoDB 使用手册
    PHP面向对象的标准
  • 原文地址:https://www.cnblogs.com/tanghm/p/12863237.html
Copyright © 2020-2023  润新知