转跳点:

  这道题可就整死我了,第三个条件我看了好久才看懂。当我看懂第三个条件之后,就感觉自己之前好蠢。唉,不多说,先上题

  样例较长,比较所以可能会有些模糊。题目的要求很明确,符合三个条件,任意一个条件都视为答案正确,然后输出OK。看清楚需求之后,我们来分析一下条件。

条件:

  第一种:只含有P、A、T三个字符,少一个都不行,这个意思就是 这字符串至少是长度为 3 的 PAT。

  第二种:形如“……”PAT“……”形式的字符串,前后“……”的中的字符只能是由A所构成的字符串且长度必须相等,

    也就是形如 APATA, AAPATAA, AAAPATAAA……这样的字符串,也判定为答案正确

  第三种:形如aPbTc的字符串如果符合上述两种,那么 aPAbTac 也为“答案正确”。

 我们得好好分析一下第三个个条件,单独分析第三个条件会发现无论输入是什么都是OK。所以我们应该结合样例分析。

    根据样例里的这三组样例:

       AAPATAA    --YES;

      AAPAATAAAA  --YES;

      APAAATAA   --NO。

  这样我们就可以得出一下规律

  只要P前面的A的个数乘以PT之间的A的个数的积等于T后面的A的个数且字符串中只含有单个P和T就为YES,否则NO。即条件三中符合a*b=c。然后看条件二不难发现:条件二包含在条件三中。知道这些后,就可以通过了。

  最后当然是实现啦:

代码:

 1 #include <stdio.h>
2 #include <string.h>
3 #define LEN 101
4
5 int main()
6 {
7 int cnt_str = 0; //字符串个数
8 scanf("%d", &cnt_str);
9 for (int i = 0; i < cnt_str; i++)
10 {
11 char str[LEN];
12 scanf("%s", str); //读入字符串
13 int cnt_P = 0, cnt_T = 0, isRight = 1;
14 int pos_P = 0, pos_T = 0; //设置P、T的下标
15 for (int i = 0; i < strlen(str); i++)
16 {
17 if (str[i] == 'P')
18 {
19 pos_P = i; //记录P的下标
20 cnt_P++;
21 }
22 else if (str[i] == 'T')
23 {
24 pos_T = i; // 记录T的下标
25 cnt_T++;
26 }
27 else if (str[i] != 'A')
28 { //有其他字符
29 isRight = 0;
30 break;
31 }
32 }
33 if (isRight && cnt_P == 1 && cnt_T == 1)
34 { //如果字符串只有PAT三种字符 且 P、T数量为1
35 int l_A = 0, c_A = 0, r_A = 0; // 声明左、中、右 字符A的数量
36 l_A = pos_P;
37 c_A = pos_T - pos_P - 1;
38 r_A = strlen(str) - pos_T - 1;
39 if (c_A > 0 && l_A * c_A == r_A)
40 { //PT之间有A,且A的数量 左*中 = 右
41 printf("YES\n");
42 continue;
43 }
44 }
45 printf("NO\n");
46 }
47 return 0;
48 }

  PTA不易,诸君共勉!

P1003 我要通过!的更多相关文章

  1. P1003 越野跑【tyvj】

    /*=========================================================== P1003 越野跑 描述 Description 为了能在下一次跑步比赛中有 ...

  2. 洛谷 P1003 铺地毯

    嗯.... 一道比较水的模拟题.. 刚拿到题的时候被它的数据范围吓到了,二维数组不可能开那么大啊,可是一边做发现测试数据太水 ... 先看一下题吧... 题目描述 为了准备一个独特的颁奖典礼,组织者在 ...

  3. (水题)洛谷 - P1003 - 铺地毯

    https://www.luogu.org/problemnew/show/P1003 一开始觉得是用树套树来区间修改单点查询,但是发现空间不够开. 看了题解发现这个是静态的问题,而且只问一个点的结果 ...

  4. P1003 铺地毯(noip 2011)

    洛谷——P1003 铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯 ...

  5. luogu p1003

    P1003 题意 经过多个矩形(1e3)覆盖后后某个坐标属于那个矩形(仅仅是一次询问) 大水题,直接的做法,从后向前处理矩形是否覆盖查询的点,若覆盖,则是该矩形编号 题解 int get_num(){ ...

  6. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

  7. 洛谷P1003 [NOIP2011提高组Day1T1]铺地毯

    P1003 铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号 ...

  8. Java实现蓝桥杯-算法提高 P1003

    算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...

  9. AC日记——铺地毯 洛谷 P1003(水水水水水~)

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  10. [NOIP2011] 提高组 洛谷P1003 铺地毯

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

随机推荐

  1. 【PAT甲级】1023 Have Fun with Numbers (20 分)

    题意: 输入一个不超过20位的正整数,问乘2以后是否和之前的数组排列相同(数字种类和出现的个数不变),输出Yes或No,并输出乘2后的数字. AAAAAccepted code: #define HA ...

  2. Vue源码(下篇)

    上一篇是mount之前的添加一些方法,包括全局方法gloal-api,XXXMixin,initXXX,然后一切准备就绪,来到了mount阶段,这个阶段主要是 解析template 创建watcher ...

  3. 1016 部分A+B (15 分)

    正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​.例如:给定 8,D​A​​=6,则 A 的“6 部分”P​A​​ 是 66,因为 A 中有 ...

  4. 一道快速考察 Python 基础的面试题

    这是前一阵子群友发在群里的一道面试题,利用 Python 字典的特性,可以巧妙地使用精简代码达成完美解. 题目 将 data 转换成 new_data 这种形式,写出转换过程. data = { 'a ...

  5. Hadoop大实验——MapReduce的操作

    日期:2019.10.30 博客期:114 星期三 实验6:Mapreduce实例——WordCount   实验说明: 1.          本次实验是第六次上机,属于验证性实验.实验报告上交截止 ...

  6. vb.net自学完整版

    https://m.book118.com/html/2016/1203/67671992.shtm

  7. 为什么在/etc/profile中设定的环境变量,对子进程可见

    系统启动时有个过程是启动初始shell,执行一些固定目录下的脚本,比如/etc/profile.....(系统启动时执行一次),我们在这些文件中添加并导出环境变量 这样shell启动的其它的进程就具备 ...

  8. 初始化加载和导航时脚本执行的函数(初始化脚本执行环境)page.evaluateOnNewDocument

    /** * Copyright 2017 Google Inc., PhantomJS Authors All rights reserved. * * Licensed under the Apac ...

  9. pyhton的返回值

    a=input() input()函数返回的是字符‘2’ a=bin(2) bin函数返回的是二进制形式的字符串'0b10' type()判断类型 bin()转化成二进制 int(a,2)可以强制把字 ...

  10. Python学习第七课——集合(set) 和 字符串拼接

    集合(set) # 2 无序 # 3 集合中元素必须是不可变类型 # 定义集合 s = {1,2,3,4,5} print(s) # 输出结果 {1, 2, 3, 4, 5} # 1 集合由不同元素组 ...