九度OJ 1022 遊船出租

2021-07-14 03:50:25 字數 1648 閱讀 6328

題目描述:現有公園遊船租賃處請你編寫乙個租船管理系統。當遊客租船時,管理員輸入船號並按下s鍵,系統開始計時;當遊客還船時,管理員輸入船號並按下e鍵,系統結束計時。船號為不超過100的正整數。當管理員將0作為船號輸入時,表示一天租船工作結束,系統應輸出當天的遊客租船次數和平均租船時間。

注意:由於線路偶爾會有故障,可能出現不完整的紀錄,即只有租船沒有還船,或者只有還船沒有租船的紀錄,系統應能自動忽略這種無效紀錄。

輸入:測試輸入包含若干測試用例,每個測試用例為一整天的租船紀錄,格式為:

船號(1~100) 鍵值(s或e) 發生時間(小時:分鐘)

每一天的紀錄保證按時間遞增的順序給出。當讀到船號為-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

做完這題,有點欲哭無淚的感覺。 題目本身並不難,如果採用struct結構,那思路就更清晰了。對於每次碰到s的處理是將其做乙個標記,並且將時間保留下來;碰到e的話,看是否之前同乙個船號出現過,沒有出現過的話,那就是無效記錄,直接跳過,如果之前出現過,那就將時間保留下來,計算出該船號對應的花費時間,次數加1。最後保留整數,可以通過餘數加0.5再取整數的方法即可。

但是這道題困了我好久,一直wrong,後來發現竟然是因為讀-1這種情況出了問題。 之前我採用讀入一行來處理。但題目中說的很清楚,當讀到船號為-1,全部輸入結束,也就是說不讓你輸入了。所以這題不能按行輸入,要先判斷讀入的第乙個數字數否是-1,這樣的話就必須分開輸入。。

這道題好坑啊。 以後記得要看清楚題目。

#include #include using namespace std;

struct time;

int substract(time a,time b)

int main(){

string str; //待解析的字串

bool flag[110];

time t_start[110],t_end[110];

memset(flag,0,sizeof(flag));

memset(t_start,0,sizeof(t_start));

memset(t_start,0,sizeof(t_end));

double count = 0; //表示一天用船的次數

double time = 0 ; //表示總的用船時間

int boat_number;

while(cin>>boat_number){

if(boat_number == -1)

break;

getline(cin,str);

if(boat_number == 0){

if(count == 0)

cout<

九度oj 1022 遊船出租

時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 3689 解決 1456 題目描述 現有公園遊船租賃處請你編寫乙個租船管理系統。當遊客租船時,管理員輸入船號並按下s鍵,系統開始計時 當遊客還船時,管理員輸入船號並按下e鍵,系統結束計時。船號為不超過100的正整數。當管理員將0作為船號輸入...

OJ 1022 遊船出租

include include include include using namespace std typedef struct record record mapm map iterator it int getmin int hour,int min int gettime string s...

hdu 1861 九度1022 遊船出租

題目1022 遊船出租 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 4249 解決 1680 題目描述 現有公園遊船租賃處請你編寫乙個租船管理系統。當遊客租船時,管理員輸入船號並按下s鍵,系統開始計時 當遊客還船時,管理員輸入船號並按下e鍵,系統結束計時。船號為不超過100的正整數。...