• PAT (Basic Level) Practise 1014 福尔摩斯的约会


    题目链接 http://www.patest.cn/contests/pat-b-practise/1014

    大致题意:对比两对字符串,找出第一对字符串中第1对相同的大写英文字母,并且输出其对应的星期数。在比对第一对字符串中第2对相同的字符,输出其对应的钟头最后找出后面一对字符串中第1对相同的英文字母, 输出其对应的分钟

    我使用了STL中的map来达到字母和表达星期几的字符串之间的映射 ,使用insert(pair<>)的方式来添加map元素,查询用数组方式即可,也算是熟练了一下map怎么用。。

    因为题目两个地方都只取第一个相同的,一开始写的时候找到相同元素之后没有立即break掉,导致WA了两发。

    AC代码

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <map>
     4 using namespace std;
     5 string s1,s2,s3,s4;
     6 map< char,string > imap;
     7 int main()
     8 {
     9     imap.insert(pair< char, string >('A', "MON"));
    10     imap.insert(pair< char, string >('B', "TUE"));
    11     imap.insert(pair< char, string >('C', "WED"));
    12     imap.insert(pair< char, string >('D', "THU"));
    13     imap.insert(pair< char, string >('E', "FRI"));
    14     imap.insert(pair< char, string >('F', "SAT"));
    15     imap.insert(pair< char, string >('G', "SUN"));
    16     while( cin>>s1>>s2>>s3>>s4 )
    17     {
    18         int len1=s1.length();
    19         int len2=s2.length();
    20         int len3=s3.length();
    21         int len4=s4.length();
    22         int flag=0;
    23         for( int i=0; i<( len1>len2? len2:len1 ); i++ )
    24         {
    25             if( s1[i]==s2[i] && flag==0 && s1[i]>=65 && s1[i]<=90 )
    26             {
    27                  cout<<imap[s1[i]]<<" ";
    28                  flag=1;
    29                  continue;
    30             }
    31             else if( s1[i]==s2[i] && flag==1  )
    32             {
    33                  if( s1[i]>=48 && s1[i]<=57 )
    34                     cout<<"0"<<s1[i]-'0'<<":";
    35                  else
    36                  {
    37                     if( s1[i]>=65 && s1[i]<=90 )
    38                        cout<<s1[i]-'A'+10<<":";
    39                      else
    40                        cout<<s1[i]-'a'+10<<":";
    41                  }
    42                  break;
    43             }
    44         }
    45        for( int i=0; i<( len3>len4? len4:len3 ); i++ )
    46         if( s3[i]==s4[i] && ( (s3[i]>=65 && s3[i]<=90) || (s3[i]>=97 && s3[i]<=122) ) )
    47        {
    48            if( i<10 )
    49             cout<<"0"<<i<<endl;
    50            else
    51             cout<<i<<endl;
    52             break;
    53        }
    54     }
    55     return 0;
    56 }

    第一篇博客。。找自信的,好水啊==

  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/kiwibird/p/4798824.html
Copyright © 2020-2023  润新知