贪心算法Python。获取所有序列

问题描述 投票:0回答:1

试图通过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
python algorithm dynamic-programming greedy
1个回答
0
投票

我认为这是这行,因为您要排除最后的交易顺序(变量中有错字)

if days_for_trading==len(traiding_sequence):
    break

尝试使用

if days_for_trading > len(traiding_sequence):
    break
© www.soinside.com 2019 - 2024. All rights reserved.