zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    wait函数和waitpid的使用和总结
    linux中sleep函数的使用和总结
    alarm()函数的使用总结
    linux定时器的实现方法
    Socket的长连接和短连接
    记录各种材质的数据
    max导出模型插件
    鸡汤 -心灵 记录
    UGUI 加载图片
    u3d udp服务器
  • 原文地址:https://www.cnblogs.com/kiwibird/p/4798824.html
Copyright © 2011-2022 走看看