2017-10-11 74 views
-2

我有一個練習算法的問題,不知道它如何在python上工作。所以這裏是:Python算法問題

編寫程序,在最壞的情況下,你可以在郵局中等待 的郵局找到時間,他將在同一天得到他的包裹。他不會去在08:00之前在郵局。

輸入: 在標準輸入的第一行上有一個整數N--即員額工作間隔的數量。

在接下來的N行上寫入格式爲HH:MM HH:MM的每個工作間隔的開始和結束。 時間間隔按時間排序,它們不會在08:00之前開始。在相鄰時間間隔內暫停1分鐘。 在最後一行有一個整數K - 即搜索包的時間,以分鐘爲單位。

輸出:

在非標準輸出的一行程序應該打印在最壞的情況下 該人在郵局等待 - 進入獲取包 這兩次應該是辦公室和時間的時間以HH:MM格式打印並以一個間隔(空格)分隔。 如果存在多個最差的情況,則打印出該人抵達郵局時較早的那個人。

範圍 1 ≤ N ≤ 20

例如: 輸入
3 08:00 08:01 08:02 08:03 08:04 08:05 1

輸出
08:01 08:03

提前感謝!

編輯:分析問題 - 練習是技術性的,程序實現應該是準確的。 你應該讓每一分鐘像 - 小時* 60+分鐘。然後,每個間隔 將設置幾個數字,其中t1是間隔的開始時間 分鐘,t2 - 時間間隔結束。 隨着c - 人到達郵局的時間。 在開始c = 480(小時是08:00)。我們將查看行中的間隔。用i - 下一個工作時間間隔t1到t2。如果t2-t1≥K,那麼在t 1 + K時刻人員將獲得他的包裹,並且他正在等待t1 + K - с分鐘。將它與 比較一下,如果這個選項更好,我們保存它。然後,我們應用 c = t2 - K + 1,然後我們繼續以相同的方式製作間隔。

+0

我不明白你期望的輸出是什麼? – Alperen

+0

你能提供更多的測試用例嗎?另外,至少解釋一個! – Miraj50

+0

作爲輸出 - 進入辦公室的時間和獲得包裹的時間 – mastaofthepasta

回答

0

我想,用戶必須給輸入的時間。所以,我把它添加到輸入。

這裏是我的代碼:

# Translates HH:MM to minutes as integers. For example 08:00 => 480 
def str2minutes(s): 
    sp = s.split(":") 
    return int(sp[0]) * 60 + int(sp[1]) 

# Translates minutes to HH:MM. For example 490 => 08:10 
def minutes2str(m): 
    hour = int(m/60) 
    minute = m - hour * 60 
    if hour < 10: 
     hour = "0" + str(hour) 
    if minute < 10: 
     minute = "0" + str(minute) 
    return str(hour) + ":" + str(minute) 

# Get interval count(N) 
interval_count = int(input("Enter work intervals N : ")) 

# Get intervals separately 
interval_list = [] 
for i in range(interval_count): 
    interval_list.append(input("Enter hours and minutes : ")) 

# Get searching time(K) 
searching_time = int(input("Enter the time in minutes for searching the package K : ")) 

# I think, getting time of entering is necessary 
time_of_entering = input("Enter the time of entering : ") 

# Control all intervals until find the proper one 
for interval in interval_list: 
    start = str2minutes(interval.split()[0]) 
    finish = str2minutes(interval.split()[1]) 
    if start >= str2minutes(time_of_entering) and (finish - start) >= searching_time: 
     print("Time of entering : " + time_of_entering) 
     print("Time of starting to search : " + minutes2str(start)) 
     print("Time of getting the package : " + minutes2str(start + searching_time)) 
     break # If we found the proper one, loop should end. 

輸入:

Enter work intervals N : 4 
Enter hours and minutes : 08:00 08:01 
Enter hours and minutes : 08:10 08:12 
Enter hours and minutes : 08:16 08:20 
Enter hours and minutes : 08:24 08:30 
Enter the time in minutes for searching the package K : 3 
Enter the time of entering : 08:01 

輸出:

Time of entering : 08:01 
Time of starting to search : 08:16 
Time of getting the package : 08:19 

這也許不是你想要什麼,但我希望,這有助於。

+0

由於某種原因,我沒有得到輸出:< – mastaofthepasta

+0

你可以再試一次,我編輯它 – Alperen

+0

是的,它現在好了!感謝您的評論! – mastaofthepasta