首页 > 代码库 > 1014. 福尔摩斯的约会 (20)

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

 

  此题坑极多:有几下几个容易误导人的地方:

  1: 天数和时间不仅要英文字母相同, 连位置也要相同.

  2: 天数和时间只存在于第一行第二行, 根本不用对比第三行第四行!同理分钟只要对比第三行第四行就行了. 这里简直太坑了!

  3: 分钟数, 注意是"英文字母"! 也就是说不一定是小写, 大写也可以的! 整整花了一天时间, 把所有坑踩了遍. 

 

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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
#include <stdio.h>
#include <string.h>
int main(){
    char s[4][60]={};
    char d=z;    
    char h=z;
    int m=-1;
    int dj=0; //ó?à′±ê??D3???μ????? 
    for(int i=0;i<4;i++){    
        scanf("%s",&s[i]);
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<strlen(s[i]);j++){
            if(s[i][j]==s[i+1][j]){
                if(s[i][j]>=A&&s[i][j]<=G&&d==z){
                    d=s[i][j];
                    dj=j;                                            
                }    
            }                
        }
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<strlen(s[i]);j++){
            if(s[i][j]==s[i+1][j]){
                if(((s[i][j]>=0&&s[i][j]<=9)||(s[i][j]>=A&&s[i][j]<=N))&&j>dj&&h==z){
                    h=s[i][j];
                }    
            }                
        }
    }
    for(int i=2;i<4;i++){
        for(int j=0;j<strlen(s[i]);j++){
            if(s[i][j]==s[i+1][j]){
                if(((s[i][j]>=A&&s[i][j]<=Z)||(s[i][j]>=a&&s[i][j]<=z))&&m==-1){
                    m=j;
                }    
            }                
        }
    }
    
    if(d==z||h==z||m==-1){
        return 0;
    }

    switch(d){        
        caseA:
            printf("MON");
            break;
        caseB:
            printf("TUE");
            break;
        caseC:
            printf("WED");
            break;
        caseD:
            printf("THU");
            break;
        caseE:
            printf("FRI");
            break;
        caseF:
            printf("SAT");
            break;
        caseG:
            printf("SUN");
            break;
    }
    printf(" ");
    switch(h){
        case0:
            printf("00");
            break;
        case1:
            printf("01");
            break;
        case2:
            printf("02");
            break;
        case3:
            printf("03");
            break;
        case4:
            printf("04");
            break;
        case5:
            printf("05");
            break;
        case6:
            printf("06");
            break;
        case7:
            printf("07");
            break;
        case8:
            printf("08");
            break;
        case9:
            printf("09");
            break;
        case A:
            printf("10");
            break;
        case B:
            printf("11");
            break;
        case C:
            printf("12");
            break;
        case D:
            printf("13");
            break;
        case E:
            printf("14");
            break;
        case F:
            printf("15");
            break;
        case G:
            printf("16");
            break;
        case H:
            printf("17");
            break;
        case I:
            printf("18");
            break;
        case J:
            printf("29");
            break;
        case K:
            printf("20");
            break;
        case L:
            printf("21");
            break;
        case M:
            printf("22");
            break;
        case N:
            printf("23");
            break;        
    }
    
    printf(":%02d",m);
    
    
    
    return 0;
}

 


 

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