python -- 教室调度问题
来源:互联网 发布:oracle .sql如们运行 编辑:程序博客网 时间:2024/05/16 12:41
#! /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):
item_list.append(course[i])
print("ttt %s" % item_list)
break
# 遍历结束还有冲突,就重新构造list
if( (k >= (len(result)-1)) and conflict):
inner.append(course[i])
result.append(inner)
print(result)
if __name__ == "__main__":
for i in range(len(course)):
print("%s: %s" % (course[i], time_list[i]),end= ', ')
print()
collect_course()
# -*- 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):
item_list.append(course[i])
print("ttt %s" % item_list)
break
# 遍历结束还有冲突,就重新构造list
if( (k >= (len(result)-1)) and conflict):
inner.append(course[i])
result.append(inner)
print(result)
if __name__ == "__main__":
for i in range(len(course)):
print("%s: %s" % (course[i], time_list[i]),end= ', ')
print()
collect_course()
阅读全文
0 0
- python -- 教室调度问题
- python -- 教室调度问题 之dict方式
- 教室课程调度问题的两种解法(区间着色问题)
- 教室规划问题
- 用python获取教室人数(粗糙版)
- 最少教室问题与区间图着色问题类似
- 跟着Crossin的编程教室学python语法
- python定时调度
- python任务调度
- Python 任务调度-APScheduler
- Python-FCFS调度算法
- python任务调度
- 教室规划问题(top-down)动态规划
- 算法导论-16.1-4 活动教室选择问题
- 算法导论-16.1-4 活动教室选择问题
- 1877: 蛤玮打扫教室(区间覆盖问题)
- 问题:飞行调度难题
- 任务调度问题
- Improving Deep Neural Network with Multiple Parametric Exponential Linear Units(MPELU译文)
- 枚举写法模板
- 理解设计模式之装饰器模式
- 趟过的那些坑-listview addfootview点击
- 最大质因数
- python -- 教室调度问题
- Boostnote是什么?-是为程序员开发的一种开放源代码记事本
- C/C++ << 左移运算符,. >>右移运算符
- cocos2d-js 分享截屏-js代码
- Fastjson
- Android 使用RenderScript 实现毛玻璃(模糊)
- python使用xlrd读取excel数据时,整数和日期变小数的解决办法
- Android从入门到转行之登陆
- codeforce 847B Preparing for Merge Sort