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)的更多相关文章

  1. PAT 1014 福尔摩斯的约会 (20)(代码+思路)

    1014 福尔摩斯的约会 (20)(20 分) 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfd ...

  2. PAT 1014. 福尔摩斯的约会 (20)

    大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm".大侦 ...

  3. PAT乙级:1014 福尔摩斯的约会 (20分)

    PAT乙级:1014 福尔摩斯的约会 (20分) 题干 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk ...

  4. PAT乙级 1014. 福尔摩斯的约会 (20)

    1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...

  5. 浙江大学PAT上机题解析之1014. 福尔摩斯的约会 (20)

    1014. 福尔摩斯的约会 (20) 时间限制   50 ms 内存限制   32000 kB 代码长度限制   8000 B 判题程序     Standard     作者     CHEN, Y ...

  6. PAT 乙级 1014 福尔摩斯的约会 (20) C++版

    1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...

  7. PAT (Basic Level) Practise (中文)- 1014. 福尔摩斯的约会 (20)

    http://www.patest.cn/contests/pat-b-practise/1014 1014. 福尔摩斯的约会 (20) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 ...

  8. PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20分)

    1014 福尔摩斯的约会 (20分) 带侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hys ...

  9. PAT-乙级-1014. 福尔摩斯的约会 (20)

    1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...

随机推荐

  1. php 修改图片分辨率

    <?php function resize_image($file, $w, $h, $crop=FALSE) { list($width, $height) = getimagesize($f ...

  2. Maven仓库--Nexus的配置使用

    一.Nexus的作用 指定私服的中央地址.将自己的Maven项目指定到私服地址.从私服下载中央库的项目索引.从私服仓库下载依赖组件.将第三方项目jar上传到私服供其他项目组使用. 二.Nexus仓库 ...

  3. 用js实现千位分隔符

    function mm(num) { return num && num .toString() .replace(/(\d)(?=(\d{3})+\.)/g, function($0 ...

  4. poi复杂excel的实现

    一:前言 最近帮一个朋友做excel的导出功能,对于我来说还是挺头疼,我看了下表格样式,对于我来说还是挺头疼的,想当年耗子刚刚出社会的时候做的第一份工作,第一份任务就是把把word转换为html,在这 ...

  5. ZOJ 3777 B - Problem Arrangement 状压DP

    LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3777 题意:有N(\( N <= 12 \))道题,排顺序 ...

  6. 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡

    [题意]给定无向图,炸弹开始在1,在每个点爆炸概率Q=p/q,不爆炸则等概率往邻点走,求在每个点爆炸的概率.n<=300. [算法]概率+高斯消元 [题解]很直接的会考虑假设每个点爆炸的概率,无 ...

  7. MyBatis数据库字段和实体对象属性名不一致的解决方案

    数据库和对象的属性名不一致是很常见的问题,这个时候依从表字段到对象属性名的按名称匹配映射已经搞不定这个了,下面是几种解决方案. 1. 开启驼峰转换 如果数据库中的字段名与对象只是简单的不一致的话,比如 ...

  8. vue使用jsx/axios拦截器设置

    最害怕的就是做过的事情,转几天又忘记了:写过的代码,也模模糊糊不知道哪里去了,所以告诉自己最好把每天遇到的问题记录下来,好,开始. 新公司要搭个vue后台框架,所以用了简简单单的 vue+iview+ ...

  9. html 中的列表

    html 中列表可以分为 1.  无序列表(ul--li 的形式) 2.  有序列表(ol li的形式) 3.  定义列表(dl 的形式) 下面来看几种列表的具体内容: 1.无序列表. 无序列表的格式 ...

  10. Ice Cream Tower Gym - 101194D (贪心 + 二分 )

    题目链接 : https://cn.vjudge.net/problem/Gym-101194D 题目大意 : 给你n个冰激凌球,让你用这些冰激凌球去垒冰激凌,要求是下面的这一个必须是他上面一个的两倍 ...