您的位置:首页 > 其它

1014. 福尔摩斯的约会 (20):阅读能力也需要提高···

2015-06-25 15:44 423 查看
#include<iostream>
#include<map>
#include<string>
#include<ctype.h>//isalpha()
#include<iomanip>
using namespace std;
#define Size 60
int main()
{
        string S1, S2, S3, S4;
        string Day;
        int H, M;
        map<char, string>M1;
        map<char,int>M2;
        M1['A'] = "MON"; M1['B'] = "TUE"; M1['C'] = "WED";
        M1['D'] = "THU";  M1['E'] = "FRI";  M1['F'] = "SAT";   M1['G'] = "SUN";
        for( int i=0; i<10; i++ )
            M2[i+'0'] = i;
        for( int i=10; i<24; i++ )
            M2[i-10+'A'] = i;

         cin>>S1>>S2>>S3>>S4;
         bool FindDay = false;//标记是否找到第一对相等 即确定 Day
         bool FindH = false;// 标记 是否找到 第二对 相同 即确定 HH
         int i;
        for(  i=0; i<S1.length(); i++ )
        {
                if( FindDay )// HH 一定是在 Day后找到 
                {
                        if( ( char( S1[i] ) >='A' && char( S1[i] ) <= 'N'|| S1[i]>='0'&& S1[i]<='9' ) && S1[i] == S2[i] )
                        {
                            H = M2[char(S1[i])];
                            //cout<<S1[i]<<" "<<H<<endl;
                            FindH = true;
                        }
                }
                else if( ( char( S1[i] ) >='A' && char( S1[i] )<='G' ) && S1[i] == S2[i] )
                          {
                                    Day = M1[char(S1[i])];
                                    //cout<<S1[i]<<" "<<Day<<endl;
                                    FindDay = true;
                          }
                if( FindDay && FindH )// 省去不必要的循环
                     break;
        }
        for( i=0; i<S3.length(); i++ )
            if( isalpha(char(S3[i])) && S3[i]==S4[i] )
            {
                    M = i;
                    break;
            }
        cout<<Day<<" "<<H/10<<H%10
                <<":"<<M/10<<M%10<<endl;
    return 0;
}

一开始调了好久只有第一个测试点能过···抓狂···

后来明白 “对相同” 是字符串位置上对应相等 ···

明白过后 改改就A了···

思路还是蛮清晰的···
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: