1003. 我要通过!

来源:互联网 发布:java 方法命名规范 编辑:程序博客网 时间:2024/06/07 21:04

“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于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
输出样例:
YES
YES
YES
YES
NO
NO
NO
NO

解题思路

这题主要难在题目的解读,如果将题目读懂这题就不是很难,这里我把题目作简单的分析。

1、对于第一个条件,我们可以知道所输入字符串只能包括P,A,T三个字母,我们可以根据设置3个变量来统计这3个字母的数量如果3个字母数量之和不等于字符串长度那就有可能包含其它字母。

2、条件2告诉我们的是在PAT左右两边的字符必须相等或为空或为A字符

3、条件3是比较好理解的,意思就是说P,T之间如果增加一个字符A那么在T的右边就要添加与P左边相等的字符,这个字符的数量要根据P左边的字符来定。

#include <stdio.h>#include <stdlib.h>#include <string.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {    char Input[100];    int pos_T,pos_P,count_P,count_A,count_T;    int i,j,n;    scanf("%d\n",&n);    for( i = 0 ; i < n ; i++ ){        gets(Input);        pos_T = 0;        pos_P = 0;        count_P = 0;        count_A = 0;        count_T = 0;        for( j = 0 ; j < strlen(Input) ; j++ ){            if( Input[j] == 'P' ){                count_P++;                pos_P = j ;            }            if( Input[j] == 'A' ){                count_A++;            }               if( Input[j] == 'T' ){                count_T++;                pos_T = j ;            }        }        if( //判断这个字符串是否只有P,A,T3个字母组成,条件1             count_P + count_A + count_T != strlen(Input) ||             //中间如果没有字符就不符合条件3             pos_T-pos_P <= 1 ||             //字符串中只能有一个P,T字符多出就不符合条件             count_P > 1 || count_T > 1 ||             // T右边的字符数是P左边的整数倍,倍数是和中间添加的A的数量和P左边的字符数量有关,条件3             pos_P*(pos_T-pos_P-1) != strlen(Input)-pos_T-1         ){            printf("NO\n");         }else{            printf("YES\n");         }    }    return 0;}

本篇文章转载自http://www.yuyanping.com/pat/basic-1003/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 马面褶子坏了怎么办 纱料衣服有褶怎么办 裙子如果后背那里小了怎么办 湖州耳朵鸣很严重怎么办 预授权撤销错了怎么办 打酒店里小卡片电话被骗怎么办 本科错过了选导师该怎么办 本科导师威胁学生不让毕业怎么办 意向导师名额满了怎么办? 扔的瓶子被限制怎么办 左钝缘支起始部重度狭窄怎么办 吃了抑郁症药困怎么办 如果股票退市持股人怎么办 电信身份信息审核失败怎么办 打完肌肉针肿了怎么办 refa掉了一个球怎么办 左腿比右腿粗怎么办 产妇上火怎么办吃什么下火呢 哺乳期上火怎么办吃什么下火 前扣内衣有点紧怎么办 橱柜做了小10厘米怎么办 一个月宝宝体检胸围35怎么办 月经量少脸上长斑怎么办 下压100上压160怎么办 怎么办去台湾新的驻签 学生去韩国旅游签证怎么办 猪的眼睛赛肿了怎么办 纹眉没有修复霜怎么办 衣服搞到走珠露香水洗不掉怎么办 涂牙膏把脸烧伤怎么办 月经血排不出来怎么办 猫眼角膜掉了一块怎么办 腰酸痛直不起腰怎么办 白血病移植后复发了怎么办 斐讯k2红灯常亮怎么办 洗衣机把烟洗了怎么办 吸烟吸的恶心想吐怎么办 显示双方信息的明细怎么办 电脑关不了机了怎么办 xp系统关不了机怎么办 灯的开关闭不了怎么办