码迷,mamicode.com
首页 > 其他好文 > 详细

B1014 福尔摩斯的约会

时间:2018-10-19 00:08:08      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:for   %s   数字   scanf   大小写   main   位置   min   ace   

  1. 因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母D,代表星期四;
  2. 第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A 到 N 表示);
  3. 后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4分钟。
    实现:(仔细推一下样例,有坑)
    用四个字符串储存输入,
    从头遍历前两个字符串,确定星期和小时(用字符串数组储存星期,方便了输出,可千万别用ifelse或者switch,太low)
    从头遍历后两个字符,确定分钟

#include<cstdio>

using namespace std;
int main(){
    int minum=0;
    char week=‘Z‘,hour=‘Z‘;
    char arr1[61],arr2[61],arr3[61],arr4[61];
    scanf("%s %s %s %s",arr1,arr2,arr3,arr4);
    for(int i=0;i<60;i++){
        if(arr1[i]==arr2[i])
            if(week==‘Z‘&&arr2[i]>=‘A‘&&arr2[i]<=‘G‘) {week=arr1[i];continue;}
        if(arr1[i]==arr2[i]&&week!=‘Z‘&&hour==‘Z‘&&((arr1[i]>=‘A‘&&arr1[i]<=‘N‘)||(arr1[i]>=‘0‘&&arr1[i]<=‘9‘))) hour=arr1[i];
    }
    for(int i=0;i<60;i++){
        if(arr4[i]>=‘a‘&&arr4[i]<=‘z‘&&arr3[i]==arr4[i]&&minum==0)
            minum=i;
    }
    char wek[7][4]={{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SAT"},{"SUN"}};
    printf("%s ",wek[(int)week-‘A‘]);
    if(hour>=‘0‘&&hour<=‘9‘)printf("%02d:",(int)hour-‘0‘);
    else printf("%02d:",10+hour-‘A‘);
    printf("%02d",minum);
    return 0;
}

B1014 福尔摩斯的约会

标签:for   %s   数字   scanf   大小写   main   位置   min   ace   

原文地址:https://www.cnblogs.com/hebust/p/9813322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!