• pat 1003. 我要通过!(20)


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

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

    1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符; 2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串; 3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 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

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4  
     5 int func(string str);
     6  
     7 int main() {
     8     int n;
     9     cin >> n;
    10     getchar();
    11     string *s = new string [n];
    12     for (int i = 0; i < n; i++) {
    13         getline(cin,s[i]);
    14     }
    15     int *t = new int [n];
    16     for (int i = 0; i < n; i++) {
    17         t[i] = 0;
    18     }
    19     for (int j = 0; j < n; j++) {
    20         t[j] = func(s[j]);
    21     }
    22     
    23     for (int k = 0; k < n; k++) {
    24         if (t[k] == 1) {
    25             cout << "YES" << endl;
    26         }
    27         if (t[k] == 0) {
    28             cout << "NO" << endl;
    29         }
    30     }
    31     delete [] s;
    32     delete [] t;
    33     return 0;
    34 }
    35  
    36 int func(string str) {
    37     int len = str.length();
    38     if (len <= 2)
    39         return 0;
    40     for (int i = 0; i < len; i++) {
    41         if (str[i] != 'P' && str[i] != 'A' && str[i] != 'T') {
    42             return 0;
    43         }
    44         if (str[i] == 'P') {
    45             for (int j = 0; j < i; j++) {
    46                 if (str[j] != 'A')
    47                     return 0;
    48             }
    49             if (str [i + 1] != 'A')
    50                 return 0;
    51             for (int k = i + 2; k < len; k++) {
    52                 if (str[k] != 'A') {
    53                     if (str[k] != 'T') {
    54                         return 0;
    55                     }
    56                     if ((len - 1 - k) != ((k - 1 - i) * i))
    57                         return 0;
    58                     for (int m = k + 1; m < len; m++) {
    59                         if (str[m] != 'A')
    60                             return 0;
    61                     }
    62                 }
    63             }
    64         }
    65     }
    66     return 1;
    67 }
    View Code
  • 相关阅读:
    Android 反编译 -smali语法
    软件工程 -- 开发模型
    Android application testing with the Android test framework
    Android Framework 简介
    Android 系统信息的获取
    在 Ubuntu 上搭建 Hadoop 分布式集群 Eclipse 开发环境
    ARM汇编指令
    Java 面试/笔试题神整理 [Java web and android]
    vim/vi用法总结
    修改MIGO或者ML81N产生的会计凭证项目文本增强
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/5494578.html
Copyright © 2020-2023  润新知