zoukankan      html  css  js  c++  java
  • 【PAT】B1003 我要通过!

    我觉得这是PAT中最坑的一道题,表述令人很不适应
    分析过程:
    条件1.只有P,A,T三种字符
    条件2.xPATx正确,x可以是空串,或者由A组成的字符串
    条件3.如果aPbTc是正确的,aPbATca也是正确的,a,b,c与上一条件x相同
    1,2为基本条件,根据1,2推3
    根据条件1,2=》》》xPATx正确
    条件3中:
    首先有xPATx正确
    aPbTc中a=x,b=1,c=x;
    则有aPbATca中a=x,b+1=2,c+a=2x;
    则有a=x,b+1=3,c+a=3x;
    。。。。
    以此类推可得对于aPbTc要满足ab=c,而且b》=1
    <-------------------------------------------->
    解决了逻辑问题,要处理代码了。
    将一行数据存入字符串,遍历,每个字符map映射加一,并保存PT的位置
    只要map中PT只有一个,A至少一个
    另外要使a
    b = c,只要p * (t - p - 1) == strlen(arr) - t - 1,不用考虑T是否在P前边,如果那样计算出来的b为负

    #include<stdio.h>
    #include<string.h>
    #include<map>
    using namespace std;
    
    int main() {
    	int N; scanf("%d", &N);
    	for (int i = 0; i<N; i++) {
    		char arr[101];
    		scanf("%s", arr);
    		int p, t;
    		map<char, int> mp;
    		for (int j = 0; j<strlen(arr); j++) {
    			mp[arr[j]]++;
    			if (arr[j] == 'P') p = j;
    			if (arr[j] == 'T') t = j;
    		}
    		if (mp['P'] == 1 && mp['T'] == 1 && mp['A'] != 0 && mp.size() == 3 && p*(t - p - 1) == strlen(arr) - t - 1) {
    			printf("YES
    ");
    		}
    		else {
    			printf("NO
    ");
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    vim中实现php代码自动完成功能
    tt安装与配置
    GIT 常用命令
    Git命令行基本操作
    传统的分布式应用集成技术(网摘)
    离线安装IE 11
    Intellij IDEA破解激活
    Win7IE11 For x86&x64离线安装包
    Oracle Instant Client(即时客户端) 安装与配置
    转 [OpenCV]:Visual Studio 2012 搭建 OpenCV2.4.3
  • 原文地址:https://www.cnblogs.com/hebust/p/9797456.html
Copyright © 2011-2022 走看看