• PAT 1014 福尔摩斯的约会 (20)(代码+思路)


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

    大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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

    思路:

                破译星期:寻找第一对相同的字母(A-G),对应字母表的顺序,例如:A(星期一),B(星期二)...

              破译小时:注意要在破解星期之后才能破解小时,即之后的第一对相同的字符(0-9+A-N(刚好24个字符对应24个小时))。

               破译分钟:只要在后2个字符串中找第一个相同的英文字母,对应的位置(即字符下标),代表分钟。

    #include <iostream>
    #include<string>
    #include<iomanip>
    #include<cmath>
    using namespace std;
    int main(){
    	string str[4];
    	int min1, min2;
    	int flag = 0;
    	string day[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
    	int d = 0, h = 0, m = 0;
    	cin >> str[0] >> str[1] >> str[2] >> str[3];   //输入4个字符串
    	min1 = str[0].length() < str[1].length() ? str[0].length() : str[1].length();
    	min2 = str[2].length() < str[3].length() ? str[2].length() : str[3].length();
    	for (int i = 0; i < min1; i++) {
    		if (!flag&&str[0][i] == str[1][i] && str[0][i] >= 'A'&&str[0][i] <= 'G') {
    			d = str[0][i] - 'A';
    			flag = 1;
    		}
    		else if (flag&&str[0][i] == str[1][i] && ((str[0][i] >= 'A'&&str[0][i] <= 'N') || isdigit(str[0][i]))) {
    			if ((str[0][i] >= 'A'&&str[1][i] <= 'N'))
    				h = str[0][i] - 'A' + 10;
    			else
    				h = str[0][i] - '0';
    			break;
    		}
    	}
    	for (int i = 0; i < min2; i++) {
    		if (str[2][i] == str[3][i] && isalpha(str[2][i])) {
    			m = i;
    			break;
    		}
    	}
    	cout << day[d] << " " << setw(2) << setfill('0') << h << ":" << setw(2) << setfill('0') << m;
    	return 0;
    }
    
  • 相关阅读:
    使用SVG绘制湖南地图
    javascript格式化table标签内容
    Canvas制作天气预报走势图
    数据字典的设计--5.数据的保存
    数据字典的设计--4.DOM对象的ajax应用
    数据字典的设计--3.首页添加删除表格(JS实现)
    数据字典的设计--2.投影查询
    数据字典的设计--1.首页功能实现
    【截串存取】分割文本字符串的方法
    【量产工具修复】U盘插上没反应,格式化提示有写保护
  • 原文地址:https://www.cnblogs.com/F-itachi/p/9974391.html
Copyright © 2020-2023  润新知