大偵探福爾摩斯接到一張奇怪的字條:我們約會吧!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
分析:
本題其實不難,只是要注意很多細節,題目越長越要仔細,我們先來梳理下細節:
細節1:「前面兩字串中第1對相同的大寫英文本母(大小寫有區分)是第4個字母』d』,代表星期四」
注意到是第1對相同的字元,條件為大寫英文本母,字母在26個字母中的相對位置i就是「星期i」,如果得到i?很簡單,當前字母減去字母a+1就是i。
細節2:「第2對相同的字元是』e』,那是第5個英文本母」
注意到是第2對相同的字元!不是字母!而且該字元一定在第乙個字元之後!
細節3:「那是第5個英文本母,代表一天裡的第14個鐘頭(於是一天的0點到23點由數字0到9、以及大寫字母a到n表示)」
這句話就是說如果第2對相同的字元是數字字元,那麼只要減去字元0就表示0點到9點的時間,但是還有乙個隱藏細節,那就是0到9之前必須加上0!這點務必記住!如果第2對相同的字元是字母,那麼它一定是a到n,注意,不是a到z!是a到n!然後減去字元a再加1就是字母在字母表中的相對位置,當然到這裡還沒有結束,因為還要加上9才是所要求的時間!
細節4:「後面兩字串第1對相同的英文本母』s』」
注意到是第1對相同的字元,條件是英文本母,那麼大小寫也要考慮在內!
細節5:「出現在第4個位置(從0開始計數)上,代表第4分鐘」
注意到這個位置不是字母在字母表中的位置!而是字元在字串中的位置!那麼你的下標必須從0開始,還有分鐘數小於10的前面要加0!
細節6:「輸入在4行中分別給出4個非空、不包含空格、且長度不超過60的字串」
輸入要求不必說,但是要注意到長度不超過60,所以你不需要考慮分鐘數超過60的情況。
分析完上述細節,一般你能做對至少70%了,剩下不到30%是判定前兩字串的方法是否正確。判定前兩字串需要判定兩次,而且第2次判定要建立在第1次判定位置的基礎上往後判定,一般可以用乙個標誌變數flag,假設flag初始化為false,那麼第1次處理完後將flag置為true,作為第2次判定的條件,第2次判定完後,退出迴圈。但是你要注意這兩次判定分支的相對次序,第2次判定分支要放在第1次判定分支的前面!否則第1次判定並處理完後,第2次判定分支執行,也就是在同乙個位置上進行兩次操作,顯然是錯誤的。
**:
#include
intmain()
;int i,j,sax=0;
for(i=
0;i<
60;i++)}
if(a[i]
==b[i]
&&sax==1)
else
if(a[i]
<=
'n'&&a[i]
>=
'a')}}
for(i=
0;i<
60;i++
)else
break;}
}return0;
}
1014 福爾摩斯的約會(20 分)
1014 福爾摩斯的約會 20 分 大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm。大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間星期四 14 04,因為前面兩字串中第 1 對相同的大...
1014 福爾摩斯的約會(20 分)
include using namespace std int main int flag 0 cin a b c d for int i 0 i a a i g flag cout a a i n flag if isdigit a i printf 02d a i 0 else cout 101...
1014 福爾摩斯的約會(20 分)
1014 福爾摩斯的約會 20 分 大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm。大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間星期四 14 04,因為前面兩字串中第 1 對相同的大...