python - 贪心算法 Python。获取所有序列
问题描述
试图通过DP 和 Greedy 算法。请帮忙!
输入有时间、范围和价格。例如。-(开始,结束,价格)[(0,1,9), (0,3,8),(2,6,5),....(6,11,10)]
。如果days_for_trading=2
,程序应该给予最高的利润,它们是(0,1,9),(6,11,10)
。但它在 days range 的第一个满足条件上停止(0,1,9), (2,6,5)
。
真的不知道如何使这个迭代进一步。谢谢!
更新:感谢所有参与者。解决了。但是当前的算法不符合内存使用的限制。如果有人需要,我会在下面的评论中保留该任务的链接
def get_max(tmp, days_for_trading):
global best_profit
for day_start, day_end, price in tmp:
traiding_sequence=[]
cur_profit=0
count=0
deal=(day_start, day_end, price)
traiding_sequence.append(deal)
cur_profit+=price
for next_day_start, next_day_end, next_price in tmp:
if days_for_trading==len(traiding_sequence):
break
else:
if next_day_start>traiding_sequence[count][1]:
next_deal=(next_day_start, next_day_end, next_price)
traiding_sequence.append(next_deal)
cur_profit+=next_price
count+=1
best_profit=cur_profit if cur_profit>best_profit else best_profit
解决方案
我认为是这一行,因为您排除了最后一个交易序列(并且您的变量中有错字)
if days_for_trading==len(traiding_sequence):
break
试试看
if days_for_trading > len(traiding_sequence):
break
推荐阅读
- javascript - Vuejs:从组件观察状态变量
- postgresql - PostgreSQL:计算列中的出现次数
- php - 使用 php 从数据库更新上传的文件
- html - 如何在百里香的文本框中设置预设值?
- c# - C# 实现特定类型函数的泛型类列表
- vue.js - 如何在vueJS中获取重定向链中的最后一个url
- javascript - 为什么在执行 GET XmlHttpRequest 时无法读取和提取此 HTTP 标头?
- themes - 有没有办法将 jupyter 样式添加到 google colab 中?
- php - Symfony 5:在扩展的加载方法中加载包时出错
- spring - 客户端断开连接后 Spring RSocket 高 CPU 使用率