• 算法笔记刷题6 ( PAT 1003我要通过 )


    算法笔记刷题6 ( PAT1003我要通过 )

    题目本体

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

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

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

    这个鬼题真的没什么好说的,想不到居然卡了我一两个月。。。还是太naive了。最后是参照csdn上大佬的思路写出来的https://blog.csdn.net/oShuaiFeng/article/details/80622269

    三点要求:

    1. 只能有且必须有P/A/T三种字母,而且P/T有且只能各有一个。

    2. P必须在T前面。

    3. 统计P...T结构前A,P...T结构中A,P...T结构后A,分别记为above, mid, last。三者满足above*mid=last的关系(不用判断PT之间有没有A,首先PT不能通过编译,其次没A乘法不成立。

    放代码

    可能我代码也不咋规范吧。放c跑一直答案错误,放c++一遍就过去了。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAXN 10010
    void PATselect();
    int main()
    {
    	int num;
    	scanf("%d",&num); 
    	for(int i=0;i<num;i++){
    		PATselect();
    	}
    	return 0;
    	
     } 
    void PATselect(){
    	char str[110];
    	scanf("%s",str);
    	int P,A,T,WR,other,above,mid,last;
    	P=A=T=WR=other=above=mid=last=0; 
    	for(int i=0;str[i]!='';i++){
    		if(str[i]=='A'){
    			A++;
    			if(P==0)above++;
    			if(P>0&&T==0)mid++;
    			if(T>0)last++; 
    		}
    		else if(str[i]=='P')P++;
    		else if(str[i]=='T'){
    			if(P==0)WR=1;
    			T++; 
    		}
    		else other++;	
    	}
    	last=last-above*mid;
    	if(P==1&&A!=0&&T==1&&other==0&&WR==0&&last==0)
    	printf("YES
    ");
    	else 
    	printf("NO
    ");	
    }
    
  • 相关阅读:
    驱动表
    将索引移动到别的表空间
    log file sync, log file parallell write
    Full Hint
    4wpa_supplicant适配层 详解
    wifi 驱动 进阶11
    wifi 驱动 进阶11
    基于linux2.6.38.8内核的SDIO/wifi驱动分析
    6wpa_supplicant无线网络配置
    2系统启动后的 wifi加载 过程图解
  • 原文地址:https://www.cnblogs.com/yiyefuyou/p/12852780.html
Copyright © 2020-2023  润新知