python 教室排程問題 之dict方式

2021-08-11 22:12:37 字數 1485 閱讀 6387

#! /usr/bin/env python3

# -*- coding: utf-8 -*-

import time

course_dict = {}

course_dict["美術"] = ["09:00", "10:00"]

course_dict["英語"] = ["09:30", "10:30"]

course_dict["數學"] = ["10:00", "11:00"]

course_dict["計算機"] = ["10:30", "11:30"]

course_dict["**"] = ["11:00", "12:00"]

result =

def collect_course():

for item in course_dict.keys():

inner =

# 要比較的時間點

start = time.mktime(time.strptime(course_dict[item][0], "%h:%m"))

end = time.mktime(time.strptime(course_dict[item][1], "%h:%m"))

if (len(result)):

# 依次獲取result中的每個item(都是list)

for k in range(len(result)):

each_list = result[k]

conflict = false

# 遍歷當前list的資料,然後比較

for i in range(len(each_list)):

b = time.mktime(time.strptime(course_dict[each_list[i]][0], "%h:%m"))

c = time.mktime(time.strptime(course_dict[each_list[i]][1], "%h:%m"))

# 時間有衝突,查詢下乙個list

if( (start < b and end > b and end < c) or (start > b and start < c) ):

conflict = true

break

# 與當前list的資料都沒有衝突,加入當前list,並跳出迴圈,進入下一輪

if (i >= (len(each_list)-1) and not conflict):

break

# 遍歷結束還有衝突,就重新構造list

if( (k >= (len(result)-1)) and conflict):

else: # 加入第乙個元素

print("just print one time")

print(result)

if __name__ == "__main__":

print(course_dict)

collect_course()

python 教室排程問題

usr bin env python3 coding utf 8 import time course 美術 英語 數學 計算機 time list 09 00 10 00 09 30 10 30 10 00 11 00 10 30 11 30 11 00 12 00 將起始處加入 result 美...

教室課程排程問題的兩種解法(區間著色問題)

問題描述 假如要用很多個教室對一組課程進行排程,每節課程都有其開始時間和結束時間,我們希望使用盡量少的時間來排程所有的課程,請給出排程演算法?分析 1 利用貪心演算法來解決這個問題。1 將課程按照其結束時間的先後順序排序。2 設課程集合為c,我們可以利用貪心演算法先求出初始課程集合c的乙個最大相容課...

區間排程之區間合併問題

還是先看一道題 一 解題思路 乙個區間可以表示為 start,end 區間重疊區間排程問題,需要按 end 排序,以便滿足貪心選擇性質。而對於區間合併問題,其實按 end 和 start 排序都可以,不過為了清晰起見,我們選擇按 start 排序。顯然,對於幾個相交區間合併後的結果區間 x,x.st...