PAT乙类1014 福尔摩斯的约会 (20 分)
生活随笔
收集整理的這篇文章主要介紹了
PAT乙类1014 福尔摩斯的约会 (20 分)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、題目
大偵探福爾摩斯接到一張奇怪的字條:我們約會(huì)吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大偵探很快就明白了, 字條上奇怪的亂碼實(shí)際上就是約會(huì)的時(shí)間星期四 14:04,因?yàn)榍懊鎯勺址械?1 對(duì)相同的大寫(xiě)英文字母(大小寫(xiě)有區(qū)分)是第 4 個(gè)字母 D, 代表星期四;第 2 對(duì)相同的字符是 E ,那是第 5 個(gè)英文字母,代表一天里的第 14 個(gè)鐘頭(于是一天的 0 點(diǎn)到 23 點(diǎn)由數(shù)字 0 到 9、以 及大寫(xiě)字母 A 到 N 表示);后面兩字符串第 1 對(duì)相同的英文字母 s 出現(xiàn)在第 4 個(gè)位置(從 0 開(kāi)始計(jì)數(shù))上,代表第 4 分鐘。現(xiàn)給定兩對(duì) 字符串,請(qǐng)幫助福爾摩斯解碼得到約會(huì)的時(shí)間。輸入格式: 輸入在 4 行中分別給出 4 個(gè)非空、不包含空格、且長(zhǎng)度不超過(guò) 60 的字符串。輸出格式: 在一行中輸出約會(huì)的時(shí)間,格式為 DAY HH:MM,其中 DAY 是某星期的 3 字符縮寫(xiě),即 MON 表示星期一,TUE 表示星期二,WED 表示星期三, THU 表示星期四,FRI 表示星期五,SAT 表示星期六,SUN 表示星期日。題目輸入保證每個(gè)測(cè)試存在唯一解。輸入樣例: 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm 輸出樣例: THU 14:04二、代碼
測(cè)試點(diǎn)分析
新函數(shù)
week字符串的使用感覺(jué)不錯(cuò)哦!!可以不用switch了,get到新技能
string week[7] = {“MON”, “TUE”, “WED”, “THU”, “FRI”, “SAT”, “SUN”};
printf("%02d", j); //c語(yǔ)言,不建議用cout
str[0][j] >= ‘A’ && str[0][j] <= ‘G’
str[0][j] >= ‘0’ &&str[0][j] <= ‘9’
str[2][j] >= ‘a(chǎn)’ && str[2][j] <= ‘z’
flag的使用
它的使用,可以選擇性的執(zhí)行代碼!!!如果多種執(zhí)行塊時(shí)!!
輸出大寫(xiě)字母的位置。比如E,是第5個(gè)。
‘E’ - ‘A’ + 1
分析
1) 這個(gè)題目確實(shí)看起來(lái)有點(diǎn)復(fù)雜,但是它整個(gè)的思維是:
同時(shí)遍歷兩個(gè)字符串相同位置
1.字符相等,而且字符必須是大寫(xiě)字母,且必須在’A’ ~ ‘G’ 之間。(星期幾)
2.字符相等,而且字符必須在’A’ ~ ‘N’ 或 ‘0’ ~ '9’之間 (小時(shí))
3.字符相等, 而且必須是字母。(分鐘)
下面的只是我第一次的表示方法,有點(diǎn)繞,自己就是記錄一下!!!!可以不看
#include <iostream> #include <string.h> #include <stdio.h> using namespace std;int main() {char str[4][61] = {" "}; //四個(gè)字符串。int i, j; char c1, c2, c3, c4; //用來(lái)保存臨時(shí)字符。 string wens[7] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};int flag = 0; //用來(lái)判斷星期是不是已經(jīng)輸出!! int hour; //小時(shí)for(i=0; i<4; i++) {cin>>str[i];}for(j=0; j<61; j++) {if(str[0][j] >= 'A' && str[0][j] <= 'N') { //不是任意一個(gè)字母就行的!!必須是在范圍之內(nèi)的 c3 = str[0][j];if(flag == 1 && c3 == str[1][j]) {hour = c3 - 'A' + 10;flag = 2;break;}}else if(str[0][j] >= '0' && str[0][j] <= '9') {c2 = str[0][j];if(str[1][j] == c2 && flag == 1) { //是第一個(gè)字母相同后面找再相同的!! hour = c2 - '0';break;}}if(str[0][j] >= 'A' && str[0][j] <= 'G') { //不是任意一個(gè)字母相同就行的 c1 = str[0][j];if(str[1][j] == c1){if(flag == 0) {cout<<wens[c1 - 'A']<<" ";flag = 1;}}}}printf("%02d:", hour); //hour也必須是02d形式!!!! for(j=0, i=0; j<61; j++) {if((str[2][j] >= 'a' && str[2][j] <= 'z') || (str[2][j] >= 'A' && str[2][j] <= 'Z')) {c4 = str[2][j]; //最后一個(gè)條件只要是相同的字母就行,不區(qū)分大小寫(xiě) if(c4 == str[3][j]) {printf("%02d", j);break;}}} return 0; }總結(jié)
以上是生活随笔為你收集整理的PAT乙类1014 福尔摩斯的约会 (20 分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python3字节转化字符_捋一捋字符串
- 下一篇: ACL’22 | 为大模型定制的数据增强