python 教室排程問題

2021-08-11 22:03:57 字數 1783 閱讀 8483

#! /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 = [["美術"]]

processed =

def collect_course():

# 從1開始

for i in range(1, len(course)):

inner =

# 要比較的時間點

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

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

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

for k in range(len(result)):

# 當前list

item_list = result[k]

print("rrr %s" % item_list)

conflict = false

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

for j in range(len(item_list)):

#t = ([r for r, rr in enumerate(course) if rr == item_list[j]])[0]

t = course.index(item_list[j])

#print(t)

b = time.mktime(time.strptime(time_list[t][0], "%h:%m"))

c = time.mktime(time.strptime(time_list[t][1], "%h:%m"))

print("%s, %s, %s" % (time_list[i][0], time_list[j][0], time_list[j][1]))

print("abc, start %s, end %s, %s, %s" % (start, end, b, c))

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

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

conflict = true

print("conflict")

break

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

if ((j >= (len(item_list)-1)) and not conflict):

print("ttt %s" % item_list)

break

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

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

print(result)

if __name__ == "__main__":

for i in range(len(course)):

print("%s: %s" % (course[i], time_list[i]),end= ',  ')

print()

collect_course()

python 教室排程問題 之dict方式

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 ...

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

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

排程機任務排程問題

題目描述 假設有乙個 排程機,有n個任務相同的任務需要排程到m臺伺服器上執行,由於每台伺服器的配置不一樣,因此,伺服器執行乙個任務所花費的時間也不同。現在假設第i個伺服器執行乙個任務需要的時間為t i 假如,有2個執行機a與b,執行乙個任務分別需要7min和10min,有6個任務待排程。如果平分這6...