【PAT】1014. 福尔摩斯的约会 (20)
1014. 福尔摩斯的约会 (20)
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。
输入格式:
输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。
输出格式:
在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。
输入样例:
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输出样例:
THU 14:04 首先理解题意:
1.前两个字符串包含星期和小时两个信息,首先,两个字符串在同一位置有相同的大写字母代表了星期的信息,且大写字母在A-G之间;
2.在表示星期的大写字母的后面,再找相同的字符(包含大写字母A-N,和数字0-9),,这个字符代表了小时的信息,例如:
YN6aBcmZD8oNp6
Yh6aBdmZg8lN
1)先找相同的大写字母,得到B,表示星期二,其中,第一个位置的Y虽然相同,但不在A-G之间,大写字母B之前的6和a也不满足);
2)再在B之后找相同的字符,得到8,表示08点,其中m虽然相同,但不是大写字母,大写字母Z不在A-N之间,在8后面的N虽然也满足条件,但已经确定了时间为08点,则N应该舍弃
注意在时间小于10(0-9)的时候,打印时间时前面需补0
3.在后两个字符串中确定了分钟的信息,需要找到相同的英文字母所在的位置(大写和小写字母均可),同样只取第一个满足条件的字符所在的位置,打印时不足两位的同样需要补0 程序说明:
1.确定需要比较的两个字符串中较短的字符串长度,再进行比较;
2.判断一个字符ch是不是大写字母的三种方法:
isupper(ch);//是大写字母返回非零值(true),否则返回零(false)
if(ch>='A'&&ch<='Z');
if(ch>=65&&ch<=90);//65和90分别为A和Z对应的ASCII码值
3.判断一个字符ch是不是小写字母的三种方法:
islower(ch);//是小写字母返回非零值(true),否则返回零(false)
if(ch>='a'&&ch<='z')
if(ch>=97&&ch<=122)//97和122分别为a和z对应的ASCII码值
4.判断是否是字母用 isalpha(ch),若是,返回非零值(true),否则返回零(false)
判断是否是数字用 isdigit(num),若是,返回非零值(true),否则返回零(false)
**注意:上面提到的 isupper()、islower()、isdigit()、isalpha()均为宏定义,非真正的函数
5.在多余位置上补0的方法:
cout<<setw(n)<<setfill('0')<<i;
setw(n)表示设置位宽为 n,如果不进行设置,系统默认左对齐输出,设置后为右对齐,空出的位置以空格填充
setfill('0')表示以单个字符'0'填充空余位置,注意:setfill()中参数只能为单个字符,setfill(0)或者 setfill("0")均报错
i 为输出项 C++代码如下:
#include <bits/stdc++.h>
using namespace std;
int min(int a,int b){
if(a<b) return a;
else return b;
}
int main() {
char str[][];
int count=;
string week[]={"MON ","TUE ","WED ","THU ","FRI ","SAT ","SUN "};
cin>>str[]>>str[]>>str[]>>str[];
int len0,len2;
len0=min(strlen(str[]),strlen(str[]));
len2=min(strlen(str[]),strlen(str[]));
for(int i=;i<len0;i++){
if(str[][i]==str[][i]){
if(count==){
if(str[][i]>='A'&&str[][i]<='G'){
cout<<week[(str[][i]-'A')];
count++;
}
}
else if(count==){
if(str[][i]>='A'&&str[][i]<='N'){
cout<<(+(str[][i]-'A'))<<':';
break;
}
else if(isdigit(str[][i])){
cout<<setw()<<setfill('')<<str[][i]<<':';
break;
}
}
}
}
for(int i=;i<len2;i++){
if(str[][i]==str[][i]){
if(isalpha(str[][i])){
cout<<setw()<<setfill('')<<i;
break;
}
}
}
system("pause");
return ;
}
【PAT】1014. 福尔摩斯的约会 (20)的更多相关文章
- PAT 1014 福尔摩斯的约会 (20)(代码+思路)
1014 福尔摩斯的约会 (20)(20 分) 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfd ...
- PAT 1014. 福尔摩斯的约会 (20)
大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm".大侦 ...
- PAT乙级:1014 福尔摩斯的约会 (20分)
PAT乙级:1014 福尔摩斯的约会 (20分) 题干 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk ...
- PAT乙级 1014. 福尔摩斯的约会 (20)
1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...
- 浙江大学PAT上机题解析之1014. 福尔摩斯的约会 (20)
1014. 福尔摩斯的约会 (20) 时间限制 50 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Y ...
- PAT 乙级 1014 福尔摩斯的约会 (20) C++版
1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...
- PAT (Basic Level) Practise (中文)- 1014. 福尔摩斯的约会 (20)
http://www.patest.cn/contests/pat-b-practise/1014 1014. 福尔摩斯的约会 (20) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 ...
- PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20分)
1014 福尔摩斯的约会 (20分) 带侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hys ...
- PAT-乙级-1014. 福尔摩斯的约会 (20)
1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...
随机推荐
- tableau学习
一.维度 度量 1. 连接到新数据源时,Tableau 会将该数据源中的每个字段分配给“数据”窗格的“维度”区域或“度量”区域,具体情况视字段包含的数据类型而定. 例如: 2. tableau中的字段 ...
- GitLab安装部署与管理
一.安装Gitlab前系统预配置准备工作 操作系统:centos 7.3 1.关闭firewalld防火墙 #systemctl stop firewalld //关闭防火墙 #systemctl d ...
- dmsg命令使用
http://note.youdao.com/noteshare?id=6771284da9f10ac35652907898d63141
- 阳/阴性预测值Positive/negative Predictive Value(推荐AA)
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...
- TestNG指南
转载自:http://blog.csdn.net/bigapplestar/article/details/7300137 今天突然收到通知,统一改用TestNG写测试用例,开始查这方面的资料,学习一 ...
- 2017北京国庆刷题Day1 morning
期望得分:100+100+100=300 实际得分:100+100+70=270 T1位运算1(bit) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK ...
- C11线程管理:异步操作
1.异步操作 C++11提供了异步操作相关的类,std::future.std::promise和std::package_task.std::future作为异步结果的传输通道,方便的获取线程函数的 ...
- PHP与数据库
连接数据库 Connect 访问数据库的数据之前,先要与数据库建立连接,使用mysql_connect()方法与数据库建立连接. mysql_connect()参数 <?php //server ...
- 无废话JavaScript(上)
<程序员>2008.09期有一篇名为<无废话ErLang>的文章,这让我想到了许多的诸如“无废话C”.“无废话书评”这类的文章,也想到了JavaScript可没有一篇“无废话” ...
- 说说ASP.NET的IsPostBack
学习asp.net,就不能不谈IsPostBack属性,顾名思义,这是是否回发的意思,多用于判断是不是第一次打开 一.IsPostBack介绍 Page.IsPostBack是一个标志:当前请求是否第 ...