最近看的一个小算法
来源:互联网 发布:淘宝店铺怎么商品分类 编辑:程序博客网 时间:2024/05/21 05:04
最近想看算法书,一不小心看到的一个小东西,好久没更,更上来看 看。
#coding=utf-8 # 计算和最大的子数组 def divide_a(low, high): return (low + high) / 2 def combine_a(left_sub, right_sub, cross_sub): if left_sub[2] > right_sub[2] and left_sub[2] > cross_sub[2]: return left_sub elif right_sub[2] > left_sub[2] and right_sub[2] > cross_sub[2]: return right_sub else: return cross_sub def find_max_cross(A, low, high, mid): left_sum = 0 left_max_sum =A[mid] left_max_low = mid for i in range(mid, low-1, -1): left_sum = A[i] + left_sum if left_max_sum < left_sum : left_max_low = i left_max_sum = left_sum right_sum = 0 right_max_sum = A[mid + 1] right_max_high = mid + 1 for i in range(mid + 1, high+1): right_sum = A[i] + right_sum if right_max_sum < right_sum: right_max_high = i; right_max_sum = right_sum; print (left_max_low, right_max_high, left_max_sum + right_max_sum) return (left_max_low, right_max_high, left_max_sum + right_max_sum) def divide_and_conquer_a(A, low, high): #攻克 if low == high: return (low, high, A[low]) #分解 mid = divide_a(low, high) #递归 left_sub = divide_and_conquer_a(A, low, mid) right_sub = divide_and_conquer_a(A, mid+1, high) cross_sub = find_max_cross(A, low, high, mid) #合并 return combine_a(left_sub, right_sub, cross_sub) if __name__ == "__main__": A = [13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7] t = divide_and_conquer_a(A,0,15) print t
0 0
- 最近看的一个小算法
- 算法2(最近必须看的一个)啊
- 最近看算法的一些想法
- 最近写的一个小软件
- 最近踩的一个小坑
- 最近看LuaPlus发现的一个很好的Blog
- 最近看的电影
- 最近看的电影...
- 最近看的书籍
- 最近看的书
- 最近看的东西
- 最近看的知识点
- 一个小程序看流的读取
- 一个小例子看编程的扩展性
- 最近发现QQ游戏的一个小BUG!
- 最近要放出来的一个小lib BugReport
- 最近关于virtual box的一个小问题
- 一个小的算法问题解决
- 推荐系统 Lenskit 初探(一)
- IO流_FileOutputStream的构造方法
- RAID扫盲篇之RAID的由来
- Spark经典案例2-数据去重
- Java 的10个谎言
- 最近看的一个小算法
- 静态广播、动态广播以及黏性广播的无序显示
- Hibernate笔记:JAR包导入,常用API,多对一配置
- HTML 小笔记
- 谷哥的小弟学后台(10)——Servlet(2)
- 获取本机ip
- SQL语句:统计男女的人数
- css clientheight、offsetheight、scrollheight详解
- JavaScript数据类型--值类型和引用类型