gpt4 book ai didi

java - 使用回溯的背包

转载 作者:行者123 更新时间:2023-12-01 18:56:32 25 4
gpt4 key购买 nike

我不知道在哪里递归调用该函数。如果我将它放在 else 条件中,它在函数返回时不会检查其他元素。如果我将它放在 else 之外,它将在返回时执行一次,并且在返回时不会执行其他元素。我应该如何更改代码,以便它在回溯时检查每个元素? (权重和利润数组是公共(public)数组)
提前致谢。

private static int calculateMaxProfit(int n, int maxprofit,int weight) 
{
if(weight+weights[i]>maxweight)
{
i++;
if(i<n)
return calculateMaxProfit(n,maxprofit,weight);
else
return 0;
}
else
{
weight+=weights[i];
maxprofit+=profits[i];
}

}

最佳答案

    static int max(int a, int b) { return (a > b) ? a : b; } 


static int knapSack(int W, int wt[], int profits[], int n)
{
// Base Case
if (n == 0 || W == 0)
return 0;

if (wt[n - 1] > W)
return knapSack(W, wt, profits, n - 1);


return max(profits[n - 1] + knapSack(W - wt[n - 1], wt, profits, n - 1),
knapSack(W, wt, profits, n - 1));
}

关于java - 使用回溯的背包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com