PAT 1003. 我要通过!(20)
2015-12-23 19:57
232 查看
题目内容我不多说,经过在网上查找,发现其中一个博客上用c写的解法很简单,但是没有注释,为了有助于理解,我加以注释。
原作者代码
#include <stdio.h> #include <string.h> int main() { char c[100]; int i,j,n; int count_P,count_A,count_T,pos_P,pos_T;//分别代表'P','A','T'字符的个数,还有'P','T'的位置 scanf("%d\n",&n); for(i=0;i<n;i++) { gets(c); count_P = 0; count_A = 0; count_T = 0; pos_P = 0; pos_T = 0; for(j=0;j<strlen(c);j++) { if(c[j]=='P') { count_P++;//记录'P'的个数 pos_P = j;//记录'P'的位置 } if(c[j]=='A') count_A++; if(c[j]=='T') { count_T++; pos_T = j; } } /* 五种情况下是不正确的: 1, 4000 'P','A','T'个数总和大于其长度,说明中间有空格,因为gets()函数是能够将空格读入的 2,'T'在'P'后一位,没有'A' 3,'P'个数不止一个,'T'个数也不止一个 4,当'P'与'T'之间的'A'的个数与'P'之前'A'的个数相乘的个数是要等于'T'后面'A'的个数的,否则为错 */ if(count_P+count_A+count_T != strlen(c) || pos_T-pos_P<=1 || count_P>1 || count_T>1 || pos_P*(pos_T-pos_P-1)!=strlen(c)-pos_T-1) printf("NO\n"); else printf("YES\n"); } }
原作者代码
相关文章推荐
- FPGA/CPLD原理
- matlab画棋盘格程序
- #import、#include、@class、@protocol、@interface
- LeetCode 16 - 3Sum Closest
- 莫比乌斯反演
- 【大数据】新机遇:我的分布式机器学习故事
- 利用try退出
- mongodb的一个小坑
- C语言特性(块)
- 实现美团、饿了么购物车效果,并本地存储相关数据
- 杭电2187
- Android之UI圆角矩形,图形圆角美化
- Ubuntu 14.4 使用中遇到的问题汇总
- 数据库 --> redis介绍
- 网络流初步
- 查找恶意的TOR中继节点
- Spring学习第二天——代理对象,AOP,Spring与JDBC结合,spring要与hibernate版本对应
- C语言特性(指针数组和指向指针变量的指针)
- iptables的连接追踪机制和nf_conntrack调优
- mysql 1067 进程意外终止