牛客程式設計題 遊船出租

2021-09-05 09:39:40 字數 1511 閱讀 6242

題目描述:

現有公園遊船租賃處請你編寫乙個租船管理系統。當遊客租船時,管理員輸入船號並按下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...