題目描述:
現有公園遊船租賃處請你編寫乙個租船管理系統。當遊客租船時,管理員輸入船號並按下s鍵,系統開始計時;當遊客還船時,管理員輸入船號並按下e鍵,系統結束計時。船號為不超過100的正整數。當管理員將0作為船號輸入時,表示一天租船工作結束,系統應輸出當天的遊客租船次數和平均租船時間。注意:由於線路偶爾會有故障,可能出現不完整的紀錄,即只有租船沒有還船,或者只有還船沒有租船的紀錄,系統應能自動忽略這種無效紀錄。
輸入描述:
測試輸入包含若干測試用例,每個測試用例為一整天的租船紀錄,格式為:
船號(1~100) 鍵值(s或e) 發生時間(小時:分鐘)
每一天的紀錄保證按時間遞增的順序給出。當讀到船號為-1時,全部輸入結束,相應的結果不要輸出。
輸出描述:
對每個測試用例輸出1行,即當天的遊客租船次數和平均租船時間(以分鐘為單位的精確到個位的整數時間)。
示例1
輸入
1 s 08:10
2 s 08:35
1 e 10:00
2 e 13:16
0 s 17:00
0 s 17:00
3 e 08:10
1 s 08:20
2 s 09:00
1 e 09:20
0 e 17:00
-1輸出
2 196
0 01 60
演算法思路:利用map容器進行標記每一次借船的時間,然後對還船操作進行有效性判斷、時間計算。(正常的邏輯應該是一條船借出然後還船,然後再解除、還船,這應該算為兩次。但牛客上的測試用例邏輯為,第二次使用沒有借船過程,直接還船,借船的時間仍然為第一次借船的時間。)
#include
#include
#include
#include
using namespace std;
//用於求借船時間和還船時間中間的分鐘數
intruntime
(string &strbegin, string &strend)
intmain()
scanf
(" %c %s"
,&opeartion, inputtimestr)
; string timestr =
string
(inputtimestr)
;//將char*轉換成string型
if(shipnum ==0)
else
shipmap.
clear()
;//清空記錄容器
validcnt = sumtime =0;
//清空上一次的記錄時間
}else
else}}
}return0;
}
那個不正常的邏輯真是快搞死我了,在八十多行的測試用例中進行單步執行,都是淚啊。。。
占用記憶體:504k
如果**有錯誤或者有更好的演算法,還望斧正。
牛客網考研機試題集合 遊船出租
考點 模擬 注意 1.測試用例的問題 該題不太好 若 1 s 10 00 1 s 12 00 該如何處理?是認為1 s 12 00為無效資料,還是為最新的有效資料?若 1 s 10 00 1 e 12 00 1 e 13 00 該如何處理?正常認為1 e 13 00為無效資料 題目沒有說清楚。2.平...
hdu 1861 遊船出租(模擬題,,水)
題意 現有公園遊船租賃處請你編寫乙個租船管理系統。當遊客租船時,管理員輸入船號並按下s鍵,系統開始計時 當遊客還船時,管理員輸入船號並按下e鍵,系統結束計時。船號為不超過100的正整數。當管理員將0作為船號輸入時,表示一天租船工作結束,系統應輸出當天的遊客租船次數和平均租船時間。注意 由於線路偶爾會...
牛客網程式設計題
參考了排行榜大神 1.計算字串最後乙個單詞的長度,單詞以空格隔開 a raw input b a.split print len b 1 2.寫出乙個程式,接受乙個有字母和數字以及空格組成的字串,和乙個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫 a raw input lower b r...