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


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

    题干

    大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 AN 表示);后面两字符串第 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
    

    思路

    • mapday数据。
    • 按题意对应检测是否出现相同字符
    • 按要求处理输出
    • 记得小时和秒要补0
    • 可以用cctype判断是否为数字
    • map可以不用判断是不是在范围里,只需要确定里面有没有键即可

    code

    #include<iostream>
    #include<unordered_map>
    #include<string>
    #include<cctype>
    using namespace std;
    int main(){
    	unordered_map<char,string> day;
    	day['A']="MON";day['B']="TUE";day['C']="WED";day['D']="THU";
    	day['E']="FRI";day['F']="SAT";day['G']="SUN";
    	unordered_map<char,int> hour;
    	char c='0';
    	for(int i=0;i<10;i++) hour[c++]=i;
    	c='A';
    	for(int i=10;i<24;i++) hour[c++]=i;
    	string temp1,temp2,temp3,temp4;
    	cin>>temp1>>temp2>>temp3>>temp4;
    	auto it1=temp1.begin(),it2=temp2.begin();
    	for(;it1!=temp1.end()&&it2!=temp2.end();it1++,it2++){
    		if(*it1==*it2){
    			if(day.count(*it1)==1){
    				cout<<day[*it1]<<" ";
    				it1++,it2++;
    				break;
    			}
    		}
    	}
    	for(;it1!=temp1.end()&&it2!=temp2.end();it1++,it2++){
    		if(*it1==*it2){
    			if(hour.count(*it1)==1){
    				printf("%02d:",hour[*it1]);
    				break;
    			}
    		}
    	}
    	it1=temp3.begin(),it2=temp4.begin();
    	for(int cnt=0;it1!=temp3.end()&&it2!=temp4.end();it1++,it2++,cnt++){
    		if(*it1==*it2&&isalpha(*it1)){
    			printf("%02d",cnt);
    			break;
    		}
    	}
    	return 0;
    }
    

    结果

    提交时间 状态 分数 题目 编译器 耗时 用户
    2020/4/2 13:19:49 答案正确 20 1014 C++ (g++) 4 ms a man
    测试点 结果 耗时 内存
    0 答案正确 4 ms 492 KB
    1 答案正确 3 ms 352 KB
    2 答案正确 3 ms 424 KB
    3 答案正确 3 ms 384 KB
    4 答案正确 4 ms 384 KB
    5 答案正确 4 ms 512 KB
  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/cell-coder/p/12619170.html
Copyright © 2020-2023  润新知