• 【PAT】B1014 福尔摩斯的约会


    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;
    }
    
    
  • 相关阅读:
    告别08
    WinForm程序如何将子窗体嵌入到父窗体的Panel里
    几种排序算法
    接口的特征
    什么是重写
    C#异常处理
    什么是重载
    结构和类的区别
    Javascript的函数
    在ASP.NET中防止注入攻击
  • 原文地址:https://www.cnblogs.com/hebust/p/9813322.html
Copyright © 2020-2023  润新知