这个题我做的时候也查了不少资料,看了很多前辈实现的代码。前辈们真的很牛,用了很少的代码就实现了这个题目要求,但我理解起来困难太大。

我的想法也是用字符数组存储输入的值,但是采用遍历寻找每个字母出现次数的方法。

题目的条件前两个很好懂,就不过多赘述了,第三个条件其实要拿第二个条件作为基础条件,然后进行变化,最后得到的条件应该是前A的数目*中A的数目=后A的数目。

因为成不成立的条件都与各个字母出现的次数有关系,自然而然想到我可以把所有字母出现的次数算一遍,其中A要分为前A,中A和后A。乍一想好像很难实现,其实不然,只要遍历到P的时候退出,那么下一次再遍历的A就是中A的数目。这就要求我们记载每次遍历后退出的值是多少,由于本身是一个输出该字母出现次数的函数,因此要想再得到一个值,这里应该用引用或者是指针的方法。由于对指针不熟悉,这里踩了很多坑,包括但不仅限于:

一开始写的是*p++,这其实是对p的地址加1,那么p就指向别的地方去了,所以应该是(*p)++才正确

这段代码虽然长,但是思路比较简单,个人认为比较适合初学者看懂吧,如果有不理解的地方欢迎讨论

#include<stdio.h>
#include<windows.h>
int findA1(char a[],int *);
int findP(char a[],int *);
int findA2(char a[],int *);
int findT(char a[],int *);
int findA3(char a[],int *);
int main(){int n;int begin = 0;//这个是作为每次寻找的起始值,由于对函数内容不熟悉,一开始以为只能用指针传递,其实可以直接传形参,但这里还是保留原始答案int numA1 = 0,numA2 = 0,numA3 = 0;int numP = 0,numT =0;char pat[101];int i;for(i=0;i<101;i++){pat[i] = '0';}i = 0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%s",pat);numA1 = findA1(pat,&begin);numP = findP(pat,&begin);numA2 = findA2(pat,&begin);numT = findT(pat,&begin);numA3 = findA3(pat,&begin);if(numP != 1 || numT != 1){printf("NO\n");}else if(numA1*numA2 == numA3 && numA2 != 0){printf("YES\n");}else{printf("NO\n");}begin = 0;}system("pause");return 0;
}
int findA1(char a[],int *p){int num = 0;for(*p; ;(*p)++){if(a[*p] == 'A'){num++;}else{break;}}return num;
}int findP(char a[],int *p){int num = 0;for(*p; ;(*p)++){if(a[*p] == 'P'){num++;}else{break;}}return num;
}int findA2(char a[],int *p){int num = 0;for(*p; ;(*p)++){if(a[*p] == 'A'){num++;}else{break;}}return num;
}int findT(char a[],int *p){int num = 0;for(*p; ;(*p)++){if(a[*p] == 'T'){num++;}else{break;}}return num;
}int findA3(char a[],int *p){int num = 0;for(*p; ;(*p)++){if(a[*p] == 'A'){num++;}else{break;}}return num;
}

PAT练习——“我要通过“相关推荐

  1. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  2. 1093 Count PAT‘s

    这题出现在"活用递推"专题下面,所谓递推就是这一步的结果和上一步的结果有直接联系.对于本题来说,从左到右,记到当前位置,一共出现的P的个数,如果当前位置是P,则个数就是上一位的加1 ...

  3. 网络地址转换(PAT)

    一.静态NAT 1.实验环境 GNS3模拟软件 2.网络拓扑及IP地址规划如图 3. 通过配置PAT实现IP地址的多路复用,达到节省IP地址的目的 4.实验步骤(IP地址配置步骤省略) R1上的配置 ...

  4. PAT甲级(Advanced Level)真题--1046 Sharing

    PAT甲级(Advanced Level)真题–1046 Sharing 通过:648 提交:1138 通过率:56% To store English words, one method is to ...

  5. PAT甲级(Advanced Level)真题-- 1062 To Buy or Not to Buy

    PAT甲级(Advanced Level)真题-- 1062 To Buy or Not to Buy 通过:643 提交:1220 通过率:52% Eva would like to make a ...

  6. PAT甲级真题 1018 A+B in Hogwarts--python解法

    PAT甲级真题 1018 A+B in Hogwarts 提交:2638 通过:1559 通过率:59% If you are a fan of Harry Potter, you would kno ...

  7. ospf和pat及nat的配置

    思科配置ospf> Router(config)#router ospf 1 //配置ospf 1 Router(config-router)#network 192.168.50.0 0.0. ...

  8. 浙江大学PAT考试1009~1012(1010上帝是冠军。。)

    哎,pat1010即使java书面,只有java书面,还增加了两个点,,.啊,智商捉佳,主要pat有些不给明确的范围.造成遐想空间.. 还是按顺序介绍.. 题目地址:http://pat.zju.ed ...

  9. 【有图有真相】静态NAT、动态NAT、PAT、端口映射的详细配置过程

    实验要求:使用宿主机利用NAT地址转换技术访问虚拟机的Web80端口.全是***实弹的操作步骤. 实验前提:开启server 2008虚拟机并且搭建一个简单web服务.打开GNS3连接拓扑图的线路,一 ...

  10. PAT, PMT in MPEG2 Stream :筆記

    原文作者:Checko 转载自: http://checko.blogspot.com/2005/12/pat-pmt-in-mpeg2-stream.html ------------------- ...

最新文章

  1. Apache Tomcat7+MySQL5.6配置
  2. 安装exchange server 2003服务器
  3. CountDownLatch 的使用小例
  4. 修改PHP session 默认时间方法
  5. boost::fusion::hash_value用法的测试程序
  6. Alltesting众测平台访谈录第一弹!
  7. Android UI布局之LinearLayout
  8. Ocelot 资源汇总
  9. [蓝桥杯2019初赛]数的分解-枚举
  10. 项目搭建Nacos及遇到问题解决
  11. Oracle的sql开发之包技术实战
  12. [转载]Validation of viewstate MAC failed异常的原因及解决方法
  13. java6 3_2018.3.6 Java web notes:
  14. 理解和使用NT驱动程序的执行上下文
  15. windows打流工具IxChariot使用教程
  16. 力士乐驱动器原理图_力士乐驱动器参考手册大全
  17. 安卓的三个Activity
  18. VMware Workstation Pro网络配置(WiFi配置等)
  19. 交互式shell脚本实操
  20. 酷炫的业务看板大屏可以使用 Python 轻松制作( 附完整代码)

热门文章

  1. 又是一年高考季,激动人心
  2. openAI--十拳剑助你做AI时代的弄潮儿
  3. 2010年4月微软最有价值专家(MVP)的名单:
  4. asp毕业设计——基于asp+access的家教信息管理系统设计与实现(毕业论文+程序源码)——家教信息管理系统
  5. Eratosthenes集合筛选法求素数
  6. C# 10进制转16进制 赋值给byte数组
  7. 两大最新SCI期刊智能查询和投稿系统
  8. Java版得力API接口文档实现之接口加密
  9. java12下载安装_jdk12|jdk12下载v12.0.1官方版 附安装配置教程 - 欧普软件下载
  10. 强制刷新网页 html,网页强制刷新快捷键是哪个?