PAT乙级练习总结

PAT乙级 1003 我要通过! (20分) 第二版有注释,希望我的思路可以帮助你。


文章目录

  • PAT乙级练习总结
  • 一、1003题目
  • 二、第一版只过了三个点
  • 三、第二版
    • 1003 我要通过!
  • 总结

一、1003题目

输入样例:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
输出样例:
YES
YES
YES
YES
NO
NO
NO
NO

二、第一版只过了三个点

用了二维数组存储输入的字符串,看了其他大佬写的找了下规律,PT******,P前为ltag,PT之间为tag,T后为rtag,rtag==ltag*tag。
tag必须为1才行,PT应该返回NO。

// 1003第一遍代码
#include<stdio.h>
#include<string.h>
#define MAXS 100
int main(){int n;scanf("%d",&n);pass(n);return 0;
}
void pass(int n){char str[n][MAXS];int i,j,count,star,end,ltag,rtag,tag;for(i=0;i<n;i++){scanf("%s",&str[i]);}for(i=0;i<n;i++){count=strlen(str[i]);if(count<3){printf("NO\n");break;}ltag=0;rtag=0;tag=0;//printf("%d\n",count);for(j=0;j<count;j++){//printf("%c\n",str[i][j]);//char *p=str[i][j];//printf("%c\n",p);if(str[i][j]!='P'&&str[i][j]!='A'&&str[i][j]!='T'){printf("NO\n");}else{tag++;}}//printf("%s\n",str[i]);//printf("%d",tag);if(tag==count){star=0;end=count-1;//printf("%c %c\n",str[i][star],str[i][end]);while(str[i][star]=='A'||str[i][end]=='A'){if(str[i][star]=='A'){ltag++;star++;}if(str[i][end]=='A'){rtag++;end--;}}//printf("%d %d\n",ltag,rtag);//printf("%d %d\n",star,end);if(ltag==rtag&&(star+1)==(end-1)&&str[i][star+1]=='A'&&str[i][end-1]=='A'){printf("YES\n");}else{tag=0,count=0;star=star+1;while(star<end){count++;if(str[i][star]=='A'){tag++;}star++;}if(count==tag&&tag>1){if(ltag*tag==rtag){printf("YES\n");}else{printf("NO\n");}}else{printf("NO\n");}}}else{printf("NO\n");}}
}

感觉应该是if太多了,有的地方应该跳出的。

三、第二版

1003 我要通过!

下面展示 成功代码

#include<stdio.h>
#define MAXS 100
int main(){int n;scanf("%d",&n);//scanf输入记得加& pass(n);return 0;
}
void pass(int n){char str[n][MAXS];//二维数组存输入进来的字符串 int i,j,count,flag,star,end,ltag,tag,rtag;for(i=0;i<n;i++){scanf("%s",str[i]);}/*for(i=0;i<n;i++){printf("%s\n",str[i]);}*/for(i=0;i<n;i++){flag=0;//flag标记字符串是否全是PAT组成的 count=strlen(str[i]);//算一下第i个字符串长度 if(count<3){//如果字符串要是小于3就肯定返回NO了 flag=1;}for(j=0;j<count;j++){//若字符串中有一个不是PAT的flag变化 if(str[i][j]!='P'&&str[i][j]!='A'&&str[i][j]!='T'){flag++;}}if(flag==0){//字符串都为PAT组成时 star=0;end=count-1;ltag=tag=rtag=0;while(str[i][star]=='A'||str[i][end]=='A'){//从头和尾向中间推进 if(str[i][star]=='A'){ltag++;star++;}else if(str[i][end]=='A'){rtag++;end--;}}//printf("%c %c\n",str[i][star],str[i][end]);if(str[i][star]=='P'&&str[i][end]=='T'){//要保证字符串中P在T前 star++;while(str[i][star]=='A'){if(str[i][star]=='A'){tag++;star++;}else{break;//P和T之间如果有不是A的则跳出 }}//printf("%d %d %d\n",tag,star,end);if(star==end){//若PT中间 都为A则star和end相等 if(ltag*tag==rtag){printf("YES\n");}else{printf("NO\n");}}else{//若中间出现不是A的则star和end不等输出NO printf("NO\n");}}else{printf("NO\n");}}else{printf("NO\n");}}
}

总结

有的注释是测试用的可以无视,方法还是比较麻烦if用的很多,先往后刷了,日后来搞简便方法,初学C有的时候还是想的不全面,如有错误欢迎指正,尤其是第一版if写的眼花了。

PAT乙级 1003 我要通过! (20分)相关推荐

  1. PAT 乙级 1069 微博转发抽奖 (20 分)

    题目:PAT 乙级 1069 微博转发抽奖 (20 分) 经验总结: 可以建立一个set,用于存放中奖用户.若set中有此用户,代表此用户已中奖,奖品顺延. C++代码: #include<bi ...

  2. PAT乙级 1032 挖掘机技术哪家强 (20 分)

    1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 原题链接 代码 #include < ...

  3. PAT 乙级 1032 挖掘机技术哪家强 (20分)

    1032 挖掘机技术哪家强 (20分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 10 ...

  4. PAT乙级 1033 旧键盘打字 (20 分)

    1033 旧键盘打字 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 原题链接 代码 #incl ...

  5. PAT 乙级 1094 谷歌的招聘 (20分)

    我的个人网站 Cheese的个人主页http://www.cheese.ren/ 博客来源 PAT 乙级 1094 谷歌的招聘-Cheese的个人博客PAT 乙级 1094 谷歌的招聘 C++http ...

  6. PAT乙级 | 1069 微博转发抽奖 (20分)

    小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M(≤ 1000). ...

  7. PAT乙级1069微博转发抽奖 20(分)

    题目 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M( ≤ \l ...

  8. PAT乙级 | 1094 谷歌的招聘 (20分)

    2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e ...

  9. 【PAT乙级】1044 火星数字 (20 分)

    题目地址 #include<bits/stdc++.h> using namespace std; string a[13]={"tret","jan&quo ...

  10. 【PAT乙级】 1004 成绩排名 (20 分)

    https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448 方法一: 用STL 中的sort() #in ...

最新文章

  1. mysql in边界_mysql中 where in 用法详解
  2. thinkPHP学习笔记(2)
  3. 32M内存 跑linux内核,32位Linux单进程4G内存限制
  4. 字符串匹配rk算法c语言,字符串匹配问题(BFRK算法)
  5. mvc 返回一个对象 到视图接收
  6. Ball Dropping
  7. 柠檬工会_工会经营者
  8. FFmpeg音视频解码同步播放流程
  9. 你是怎么发现你的同事很有钱的?
  10. 二进制包如何知道go 版本_你有同时使用多版本 Go 语言的需求吗,那就快使用多版本管理利器 GVM 吧!...
  11. 数组根据某个条件筛选出符合的数据,生成一个新的数组
  12. 百思不得姐框架(二)
  13. 计算机表格中平方根符在哪插入,开方符号-平方根符号怎么打?平方根符号在word和Excel中怎么打?上面 爱问知识人...
  14. 蓝桥杯嵌入式LCD显示与LED显示问题
  15. matlab统计水文参数,科学网—[转载]利用MATLAB计算水文极值 - 刘朋的博文
  16. https防止注入_离子注入新法,将钢的耐磨性提高百倍
  17. 读书笔记--推荐系统实践(4)
  18. 大数据ui设计师_为什么设计师应该使用真实数据
  19. python情感分析语料库_利用Python实现中文情感极性分析
  20. 演化博弈的Python实现:基础篇2 基于复杂网络的演化博弈

热门文章

  1. PHP修改图片像素大小
  2. 【TED ON FLEX】支持flashplayer的RIBBIT系统
  3. Android Studio真机测试
  4. flash拼图游戏源码_在Flash中构建视频拼图游戏
  5. 中国航空公司特点机型
  6. 如何恢复删除的微信聊天记录?(详细攻略)
  7. 如何用AI快速绘制大鼠模型及相关技术路线图,超详细教程!
  8. Vue进阶(二十): 请求方式详解
  9. Mysql数据库操作语句总结(一)
  10. yolo实现交通信号灯视频流识别代码搬运及调试