在最大递归函数中查找索引。Python中的优化

2024-09-28 20:19:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我从下面的link中获取了一个代码

# A naive recursive implementation 
# of 0-1 Knapsack Problem 

# Returns the maximum value that 
# can be put in a knapsack of 
# capacity W 


def knapSack(W, wt, val, n): 

    # Base Case 
    if n == 0 or W == 0: 
        return 0

    # If weight of the nth item is 
    # more than Knapsack of capacity W, 
    # then this item cannot be included 
    # in the optimal solution 
    if (wt[n-1] > W): 
        return knapSack(W, wt, val, n-1) 

    # return the maximum of two cases: 
    # (1) nth item included 
    # (2) not included 
    else: 
        return max( 
            val[n-1] + knapSack( 
                W-wt[n-1], wt, val, n-1), 
            knapSack(W, wt, val, n-1)) 

# end of function knapSack 


#Driver Code 
val = [60, 100, 120] 
wt = [10, 20, 30] 
W = 50
n = len(val) 
print knapSack(W, wt, val, n) 

# This code is contributed by Nikhil Kumar Singh 

我想知道最佳结果包括哪些元素。换句话说,我需要知道所取元素的索引(例如,这个示例输出为:list_of_indices = [2,1]


Tags: oftheinreturnifvalbeitem