Python实现--贪心算法与活动安排问题
来源:互联网 发布:网络考试系统破解版 编辑:程序博客网 时间:2024/05/22 17:24
参考:http://blog.csdn.net/liufeng_king/article/details/8709005
如题:给出一组活动,告诉每个活动的开始时间和结束时间,要求出算出能参加的最多活动的数量或者活动的起止时间
贪心算法思路:
用两个数组s,f分别存储活动的起止时间,根据活动的结束时间对活动进行一个非减的活动序列,同样活动的开始时间list也要做对应的调整,这里博主是通过冒泡排序同步交换的,举例:活动(1,4)(2,3)(3,5)那么我们得到的
s = [2,1,3]
f = [3,4,5]
通过比较下一个活动的开始时间与上一个活动的结束时间的大小关系,确定这两个活动是否是相容的,如果开始时间大于结束时间,则相容,反之不相容,代码如下
#用冒泡排序对结束时间进行排序,同时得到对应的开始时间的listdef bubble_sort(s,f): for i in range(len(f)): for j in range(0,len(f)-i-1): if f[j] > f[j+1]: f[j], f[j+1] = f[j+1],f[j] s[j],s[j+1] = s[j+1],s[j] return s,fdef greedy(s,f,n): a = [True for x in range(n)] #初始选择第一个活动 j = 0 for i in range(1,n): #如果下一个活动的开始时间大于等于上个活动的结束时间 if s[i] >= f[j]: a[i] = True j = i else: a[i] = False return an = int(input())arr = input().split()s = []f = []for ar in arr: ar = ar[1:-1] start = int(ar.split(',')[0]) end = int(ar.split(',')[1]) s.append(start) f.append(end)s,f = bubble_sort(s,f)A = greedy(s,f,n)res = []for k in range(len(A)): if A[k]: res.append('({},{})'.format(s[k],f[k]))print(' '.join(res))
执行结果如下:输入11个活动的起止时间,输出相容的活动的起止时间
阅读全文
0 0
- Python实现--贪心算法与活动安排问题
- 【贪心算法】贪心算法与活动安排问题
- 活动安排问题 贪心算法
- 活动安排问题(贪心算法)
- 活动安排问题--贪心算法
- 活动安排问题(贪心算法)
- 活动安排问题 贪心算法
- 贪心算法-活动安排问题
- 贪心算法 活动安排问题
- 活动安排问题-贪心算法
- 贪心算法-活动安排问题
- 贪心算法-活动安排问题
- 贪心算法(活动安排问题)
- 贪心算法-活动安排问题
- 贪心算法-活动安排问题
- 贪心算法--活动安排问题
- 活动安排问题-贪心算法
- 活动安排 贪心算法实现
- Leetcode 740. Delete and Earn
- C++primer学习 12.17
- 机房重构之退卡——触发器增强版
- 02nodeJS中使用的模块化规范commonJS
- myeclipse的com.mysql.jbdc.Driver异常和java.lang.NullPointerException异常解决方法
- Python实现--贪心算法与活动安排问题
- 制作一个购物车函数
- 关于OSG 帮助文档。
- App启动那点事整理啊
- 页面中文乱码的处理
- 处理 1 counts of IllegalAnnotationExceptions Class has two properties of the same name "ITEM"
- MVP注册登录
- 如何使用memcache缓存
- 网络流:最大流以及费用流的总结