• 1003 我要通过!


         一.问题:

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    1. 10
    2. PAT
    3. PAAT
    4. AAPATAA
    5. AAPAATAAAA
    6. xPATx
    7. PT
    8. Whatever
    9. APAAATAA
    10. APT
    11. APATTAA

    输出样例:

    1. YES
    2. YES
    3. YES
    4. YES
    5. NO
    6. NO
    7. NO
    8. NO
    9. NO
    10. NO

    二.思路:

    三.代码实现:

    1. #include
    2. #include
    3. #include
    4. //检验一:是否为空,是否只包含P,T,A,并且P,T均只有一个
    5. int check_1(char *str)
    6. {
    7. int len = strlen(str);
    8. if(len == 0)
    9. {
    10. return 0;
    11. }
    12. int p=0,t=0;
    13. for(int i =0;i
    14. {
    15. if(str[i] != 'P'&&str[i] != 'A'&&str[i] != 'T')
    16. {
    17. return 0;
    18. }
    19. if(str[i] == 'P')
    20. {
    21. p++;
    22. }
    23. if(str[i] == 'T')
    24. {
    25. t++;
    26. }
    27. }
    28. if(p==t&&p==1)
    29. {
    30. return 1;
    31. }
    32. else
    33. {
    34. return 0;
    35. }
    36. }
    37. int main()
    38. {
    39. //输入数据n
    40. int n = 0;
    41. scanf("%d",&n);
    42. //输入n个字符串
    43. char str_arr[n][1001];
    44. for(int i =0;i
    45. {
    46. scanf("%s",str_arr[i]);
    47. }
    48. //判断是否通过
    49. int *result = (int*)malloc(n*sizeof(int));
    50. for(int j = 0;j
    51. {
    52. //第一轮检验
    53. if(check_1(str_arr[j]))
    54. {
    55. result[j] = 1;
    56. }
    57. else
    58. {
    59. result[j] = 0;
    60. }
    61. }
    62. for(int q = 0;q < n;q++)
    63. {
    64. if(result[q])
    65. {
    66. //第二轮检验
    67. int len = strlen(str_arr[q]);
    68. int x=0,y=0,z=0;
    69. int m=0,n,p;
    70. for(;m'P';m++)
    71. {
    72. x++;
    73. }
    74. n = m+1;
    75. for(;n'T';n++)
    76. {
    77. y++;
    78. }
    79. p = n+1;
    80. for(;p
    81. {
    82. z++;
    83. }
    84. if(y <=0)
    85. {
    86. result[q] = 0;
    87. }
    88. else
    89. {
    90. if(z / y == x)
    91. {
    92. result[q] = 1;
    93. }
    94. else
    95. {
    96. result[q] = 0;
    97. }
    98. }
    99. }
    100. }
    101. //输出
    102. for(int k =0;k
    103. {
    104. if(result[k])
    105. {
    106. if(k != (n-1))
    107. {
    108. printf("YES\n");
    109. }
    110. else
    111. {
    112. printf("YES");
    113. }
    114. }
    115. else
    116. {
    117. if(k != (n-1))
    118. {
    119. printf("NO\n");
    120. }
    121. else
    122. {
    123. printf("NO");
    124. }
    125. }
    126. }
    127. return 0;
    128. }

  • 相关阅读:
    jupyter使用教程及python语法基础
    解决error: invalid conversion from ‘unsigned char‘ to ‘unsigned char*‘
    泡泡玛特,难成“迪士尼”
    Halon 模板匹配流程
    俩表关联更新
    读高性能MySQL(第4版)笔记17_复制(下)
    PLC-Recorder离线分析软件Ana里为什么不能显示变量的编号?
    Protobuf compiler version 3.19.1 doesn‘t match library version 3.0.0
    数独·12中解法·anroid 数独小游戏·休闲益智小游戏
    Due to a bug fix in https://github.com/huggingface/transformers/pull/28687
  • 原文地址:https://blog.csdn.net/2303_76295261/article/details/133466473