PAT(乙级)1004 福尔摩斯的约会 (20)

来源:互联网 发布:java项目log4j冲突 编辑:程序博客网 时间:2024/04/28 06:55

题目来源:http://www.nowcoder.com/pat/6/problems

题目描述

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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表示星期日。题目输入保证每个测试存在唯一解。

输入例子:

3485djDkxh4hhGE2984akDfkkkkggEdsbs&hgsfdkd&Hyscvnm

输出例子:

THU 14:04
题目分析:首先Day和Hour都是从前两个字符串解读出来的,在前两个字符串中第一对相等的大写字母表示Day,此后遇到的第二对字符(0—9,a-z,A-Z)是Hour,在后两条字符串中解读Min,第一对出现的形同的英文字母。

#include<stdio.h>#include<iostream>using namespace std;string week[]={"MON","TUE","WED","THU","FRI","SAT","SUN"};int main(){        char array[4][60];        int count[4];        int i;        int Day,Hour,Min;        for(i=0;i<4;i++)        {                char c;                int j=0;                while((c=getchar())!='\n')                {                     array[i][j]=c;                     j++;                }                count[i]=j;        }        bool first=true;        for(i=0;i<min(count[0],count[1]);i++)        {                if(array[0][i]==array[1][i]&&first)                {                        if(array[0][i]>='A'&&array[0][i]<='Z')                                {                                        Day=array[0][i]-'A'+1;                                        first=false;                                        continue;                                }                }                if(array[0][i]==array[1][i]&&!first)                {                       if(array[0][i]>='0'&&array[0][i]<='9')                                Hour=array[0][i]-'0';                       else if(array[0][i]>='A'&&array[0][i]<='Z')                                Hour=array[0][i]-'A'+10;                        break;                }        }        for(i=0;i<min(count[2],count[3]);i++)        {                if(array[2][i]==array[3][i]&&((array[2][i]>='A'&&array[2][i]<='Z')||(array[2][i]>='a'&&array[2][i]<='z')))                {                        Min=i;                        break;                }        }        cout<<week[Day-1]<<" ";        if(Hour>=10)                printf("%d:",Hour);        else printf("0%d:",Hour);        if(Min>=10)                printf("%d",Min);        else printf("0%d",Min);}


1 0
原创粉丝点击