• 1003 我要通过! (20分)


    答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

    得到“答案正确”的条件是:

    1. 字符串中必须仅有 PAT这三种字符,不可以包含其它字符;
    2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
    3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 abc 均或者是空字符串,或者是仅由字母 A 组成的字符串。

    现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

    输入格式:

    每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。

    输出格式:

    每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO

    输入样例:

    8
    PAT
    PAAT
    AAPATAA
    AAPAATAAAA
    xPATx
    PT
    Whatever
    APAAATAA
    
          
        
    

    输出样例:

    YES
    YES
    YES
    YES
    NO
    NO
    NO
    NO
    

    代码

    // b1003-我要通过!.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    // PAT  APATA AAPATAA  AAAPATAAA AAAAPAATAAAAAAAA
    // 由题意可知,p前面的A的个数①乘以中间的A的个数②等于后面的A的个数③
    
    #include <iostream>
    using namespace std;
    
    bool judge(string str) {
    	int a1 = 0, a2 = 0, a3 = 0;//统计三个位置a的个数
    	int p = 0, t = 0;
    
    	for (int i = 0; i < str.length(); i++) {
    		if (p == 0) {
    			//第一段
    			if (str[i] == 'A') {
    				a1++;
    			}
    			else if (str[i] == 'P') {
    				p = 1;
    			}
    			else {
    				return false;
    			}
    		}
    		else {
    			if (t == 0) {
    				//中间那段
    				if (str[i] == 'A') {
    					a2++;
    				}
    				else if (str[i] == 'T') {
    					t = 1;
    				}
    				else {
    					return false;
    				}
    			}
    			else {
    				//最后一段
    				if (str[i] == 'A') {
    					a3++;
    				}
    				else {
    					return false;
    				}
    			}
    		}
    	}
    	if (a2 < 1) {
    		return false;
    	}
    	if (a1 * a2 == a3) {
    		return true;
    	}
    	else {
    		return false;
    	}
    }
    
    int main()
    {
    	int n;
    	cin >> n;
    	for (int i = 0; i < n; i++) {
    		string str;
    		cin >> str;
    		if (judge(str)) {
    			cout << "YES"<<endl;
    		}
    		else {
    			cout << "NO" << endl;
    		}
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    Python基础
    SQL脚本
    PDF技术之-jasperreports的使用
    redis缓存和mysql数据库如何保证数据一致性
    理解MySQL的乐观锁,悲观锁与MVCC
    intellj idea创建maven项目一直处于加载的解决问题
    Linux目录详解,软件应该安装到哪个目录
    总结
    总结
    总结
  • 原文地址:https://www.cnblogs.com/ericling/p/12325482.html
Copyright © 2020-2023  润新知