首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

PAT乙级-1003 我要通过! (20分)

  • 24-02-22 06:21
  • 3357
  • 14026
blog.csdn.net

点击链接PAT乙级-AC全解汇总

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

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

字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

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

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

输入样例:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输出样例:

YES
YES
YES
YES
NO
NO
NO
NO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

我的代码:

#include
#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    while(n--){
        char a[100]={0};
        scanf("%s",a);
        int len=strlen(a);
        int p=0,t=0,left=0,mid=0,right=0;
        for(int i=0;i<len;i++){
            if(a[i]=='A'&&p==0&&t==0){//左
				left++;
				continue;
			}
			else if(a[i]=='P'){//p
                p++;
                continue;
			}
			else if(a[i]=='A'&&p>0&&t==0){//中
				mid++;
				continue;
			}
			else if(a[i]=='T'){//t
                t++;
                continue;
			}
			else if(a[i]=='A'&&p>0&&t>0){//右
				right++;
				continue;
			}
			else
                break;
        }
        if(p==1&&t==1&&mid!=0&&left*mid==right)// aPATa
          printf("YES\n");
        else if(p==1&&t==1&&mid==1&&left==0&&right==0)
          printf("YES\n");
        else
          printf("NO\n");
    }
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

这题虽然题号在很前面,但是理解起来有一定难度,“如果 aPbTc 是正确的,那么 aPbATca 也是正确的”,这句话其实是一个递推的意思,即在PT中间如果加一个A,那么在尾部加上 P前面所有的字符,能理解这个,这道题就不难了。

有的时候题目是一起做的,所以会有不需要的头文件

注:本文转载自blog.csdn.net的邂逅模拟卷的文章"https://blog.csdn.net/qq_34451909/article/details/104653397"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top