python前缀_python前缀和算法
我试图理解前缀和概念背后的思想,看看codity here(蘑菇拣选器问题)在前缀和课程中给出的例子
我的理解是,整个概念是基于一个简单的属性,即为了求数组a的两个位置a(pos_left,pos_right)之间的所有元素的和,使用第二个数组p,其中所有元素都是连续求和的,其中搜索到的和计算为
值(P(pos_right+1))—值(P(pos_left))。在A 1 2 3 4 5 6
P 0 1 3 6 10 15 21
sum of all elements between A[2] and A[5] = 3+ 4 + 5 = 12
or using the prefix sums" P[5+1] - P[2] = 15 -3 = 12The problem
There is a street with mushroom at every place represented
by a non-empty vector. Given the initial position of a picker and its
movement range, possible maximum number of mushrooms to collect is
looked for.
看看这个例子,我不明白循环构造背后的逻辑。有人能解释一下这个算法的原理吗?
其次,我发现这个例子中的positionin索引非常混乱和麻烦。通常的做法是将带有前缀和的向量的开头的零“移位”吗?(在python中,从0开始计算向量中的元素这一事实已经引起了一些混乱)。在
解决方案
^{pr2}$
我已经为一个小数组A= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]运行了一些例子,选择了位置k=5和范围m=3。我不明白创建两个循环检查的范围的逻辑。在
我得到了循环的以下参数(p=, left_pos=, right_pos=)
loop 1 (0,5,8), (1,4,6),(2,3,5),(3,2,5)
loop 2 (0,2,5), (1,4,6), (2,5,7), (3,5,8)
兰吉各不相同。为什么?在
用于调试的版本def mushrooms2(A, k, m):
n = len(A)
result = 0
pref = prefix_sums(A)
l1 =min(m, k) + 1
print 'loop p in xrange(min(m, k) + 1): %d' % l1
for p in xrange(min(m, k) + 1):
print 'p %d' % p
print 'A= %r' % A
print 'pref= %r' % pref
left_pos = k - p
right_pos = min(n - 1, max(k, k + m - 2 * p))
result = max(result, count_total(pref, left_pos, right_pos))
print 'left_pos = k - p= %d' % left_pos
print 'right_pos= min(n-1,max(k,k+m-2*p))= %d' % right_pos
print 'max'
print '(result %d' % result
print 'count_total(pref, left_pos, right_pos)) %r, %r, %r, %r' % (pref,left_pos, right_pos,count_total(pref, left_pos, right_pos))
print 'result= %d' % result
print 'next p'
l2=min(m + 1, n - k)
print 'loop xrange(min(m + 1, n - k)): %d' % l2
for p in xrange(min(m + 1, n - k)):
print 'p %d' % p
print 'A= %r' % A
print 'pref= %r' % pref
right_pos = k + p
left_pos = max(0, min(k, k - (m - 2 * p)))
result = max(result, count_total(pref, left_pos, right_pos))
print 'right_pos = k + p= %d' % right_pos
print 'left_pos = max(0, min(k, k - (m - 2 * p)))= %d' % left_pos
print 'max'
print '(result %d' % result
print 'count_total(pref, left_pos, right_pos)) %r, %r, %r, %r' % (pref,left_pos, right_pos,count_total(pref, left_pos, right_pos))
print 'result= %d' % result
print 'next p'
print 'result %d' % result
return result
python前缀_python前缀和算法相关推荐
- python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配
注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...
- python实验原理_Python实现蒙特卡洛算法小实验过程详解
蒙特卡洛算法思想 蒙特卡洛(Monte Carlo)法是一类随机算法的统称,提出者是大名鼎鼎的数学家冯·诺伊曼,他在20世纪40年代中期用驰名世界的赌城-摩纳哥的蒙特卡洛来命名这种方法. 通俗的解释一 ...
- python 数学公式_python的数学算法函数及公式用法
之前老是跟大家说看久了Python,总感觉就像是很多的数学公式运算,大家一致觉得只是一点点像,那今天跟大家直接就说下叫"数学"算法的内容,这样大家再来品鉴下,是不是可以贯通使用的内 ...
- 谱聚类python代码_Python 谱聚类算法从零开始
谱聚类算法是一种常用的无监督机器学习算法,其性能优于其他聚类方法. 此外,谱聚类实现起来非常简单,并且可以通过标准线性代数方法有效地求解. 在谱聚类算法中,根据数据点之间的相似性而不是k-均值中的绝对 ...
- Python:实现前缀Knuth–Morris–Pratt 算法(附完整源码)
Python:实现前缀Knuth–Morris–Pratt 算法 def prefix_function(input_string: str) -> list:# list for the re ...
- python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie)...
python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie) 主要包括两部分内容: (1)利用python中的dict实现Trie: ( ...
- 中文分词算法python代码_python实现中文分词FMM算法实例
本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n- ...
- python商用_python实现sm2和sm4国密(国家商用密码)算法的示例
GMSSL模块介绍 GmSSL是一个开源的加密包的python实现,支持SM2/SM3/SM4等国密(国家商用密码)算法.项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用. 安 ...
- 粒子群优化算法和python代码_Python编程实现粒子群算法(PSO)详解
1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位 ...
- dbscan算法python实现_Python实现DBScan
Python实现DBScan 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end: 结束 ...
最新文章
- 吃惊!江苏抽查发现,144篇硕士学位论文不合格,部分单位将被约谈
- 编程之美-电梯调度算法方法整理
- Java 改变cmd颜色_9 个小技巧让你的 if else 看起来更优雅!
- 实际中的WebRTC:STUN,TURN以及信令(五)
- dede标签用法(来源网页)
- Debian的软件包管理工具命令不完全列表
- 在Excel中引用Visual Studio.NET 2008编写的COM组件
- Python官方软件包存储库成恶意软件大本营?
- NYOJ67 - 三角形面积
- oracle相同sql执行计划不同,相同的SQL 在正式和测试环境中执行计划的不同
- 博微JAVA面试_博微Java笔试题
- 英文歌曲推荐(lady gaga\Taylor swift\Adele等)
- 儿童节html模板,六一儿童节作文350字满分模板
- python可变数据类型和不可变数据类型
- C语言调试(Dev-C++)(初步)
- QT学习之路2 学习笔记
- 用laravel写一个API
- 保护眼睛的颜色#CCE8CF
- java 判断是否手机浏览器_js 判断是否是 手机端的浏览器
- 东莞厚街工业机器人展会_东莞厚街国际机械展暨工业自动化工业机器人展览会...
热门文章
- 阿里云Oss获取图片的大小信息
- NISP题库(八套模拟题)
- 怎么样可以在网络上赚钱,告诉你网上赚钱的5种方法!
- 如何将图片批量压缩大小?怎样一次性压缩多张图片?
- xps测试数据处理软件,XPS数据处理时 XPSpeaks 分峰拟合
- 软件项目中的角色以及英文简称
- 索尼笔记本笔记本计算机在哪里设置,索尼vaio笔记本怎么进bios设置|索尼笔记本进bios按什么键...
- SHA-512摘要算法(带示例)
- 固态硬盘量产工具_FORESEE G500发布,江波龙国产固态硬盘再发声
- html中 DPlayer 播放m3u8文件【方式二】