python rmq
2015-10-09 01:20
441 查看
import math def init( arr ): arr_len = len( arr ) exp = int( math.log( arr_len, 2 ) ) DP = [ [ 0 for col in range( exp + 1 ) ] for row in range( arr_len + 1 ) ] for index, item in enumerate( arr ): DP[index + 1][0] = item for e in range( 1, exp + 1 ): for start in range( 1, arr_len + 1 ): if start + ( 1 << e ) - 1 > arr_len: break DP[start][e] = max( DP[start][e - 1], DP[start + ( 1 << ( e - 1 ) )][e - 1] ) return DP def ask( DP, left, right ): cut = int( math.log( right - left + 1, 2 ) ) return max( DP[left][cut], DP[right + 1 - ( 1 << cut )][cut] ) DP = init( [ 3, 4, 1, 6, 7, 2, 10 ] ) print( ask( DP, 1, 1 ) ) print( ask( DP, 1, 2 ) ) print( ask( DP, 1, 7 ) )
相关文章推荐
- python练习题代码
- 埃拉托色尼筛选法python实现
- python3爬虫之入门基础和正则表达式
- python脚本: 计算节点创建cgroups绑定虚拟核心,实现计算资源隔离
- python 打后退键出现……^H^H解决
- python多版本管理pyenv安装使用笔记
- Python实例浅谈之十国际化支持
- 【Python之旅】第六篇(一):Paramiko模块使用演示
- 用sphinx写文档
- Python的哲学
- More on 取石子游戏
- Python基础(一): 基本介绍
- python3.x安装第三方库的解决办法
- python3爬虫之入门和正则表达式
- [Django入门知识浅介]Python Web框架(Django)的必要性
- numpy的安装
- python学习进阶一
- 《机器学习实战》学习笔记:利用Adaboost元算法提高分类性能
- 【Python】Learn Python the hard way, ex17 文件复制
- 【Python】Learn Python the hard way, ex16 读写文件