活动安排问题python实现

        活动安排问题要求高效地安排一系列争用某一公共资源的活动,贪心算法提供了一个简单的方法,使尽可能多的活动能兼容地使用公共资源。贪心算法并不总能求得问题的整体最优解,但对于活动安排问题,贪心算法却能做到,使得最终所确定的相容活动集合的规模最大,证明不在这里给出。代码如下:

def greedyManage(meeting):
	length=len(meeting)
	meeting.sort(key=lambda x:x[1])
	result=[False for i in range(length)]
	j=0 #当前选中的活动
	result[j]=True #选中第一个活动
	for i in range(1,length):
		if meeting[i][0]>=meeting[j][1]:
			j=i
			result[j]=True
	return result

def show(result):
	length=len(result)
	print('安排的活动为:')
	count=0
	for i in range(length):
		if result[i]:
			print('第',i+1,'个活动')
			count+=1
	print('\n共计',count,'个活动')

if __name__=='__main__':
	meetings=[(1,4),(3,5),(0,6),(5,7),(3,8),(5,9),(6,10),(8,11),(8,12),(2,13),(12,14)]
	res=greedyManage(meetings)
	show(res)


    meetings是一个list,里面每个tuple是一个活动的起始时间和结束时间,刚开始是乱序的,首先要按照每个活动的结束时间升序排列,然后首先默认选择第一个活动,依次遍历所有活动找出相容的活动,最后输出结果如下:



转载请注明:转自http://blog.csdn.net/littlethunder/article/details/26449245

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值