试图通过DP和贪婪算法。请帮助!
输入具有时间,范围和价格。例如。 -(开始,结束,价格)[(0,1,9), (0,3,8),(2,6,5),....(6,11,10)]
。如果为days_for_trading=2
,程序应给出最高利润,即为(0,1,9),(6,11,10)
。但是它会在天数范围为(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+=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