Java 回溯背包
我在哪里递归调用函数方面遇到了问题。如果我把它放在else条件中,它将不会在函数返回时检查其他元素。如果我把它放在else之外,它将在返回时执行一次,而在返回时不执行其他元素。 我应该如何更改代码,以便在回溯时检查每个元素?(权重和利润数组是公共数组)Java 回溯背包,java,Java,我在哪里递归调用函数方面遇到了问题。如果我把它放在else条件中,它将不会在函数返回时检查其他元素。如果我把它放在else之外,它将在返回时执行一次,而在返回时不执行其他元素。 我应该如何更改代码,以便在回溯时检查每个元素?(权重和利润数组是公共数组) 提前谢谢 private static int calculateMaxProfit(int n, int maxprofit,int weight) { if(weight+weights[i]>maxweight) {
提前谢谢
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];
}
}
私有静态int-calculateMaxProfit(int-n,int-maxprofit,int-weight)
{
if(重量+重量[i]>最大重量)
{
i++;
如果(i
static intmax(inta,intb){return(a>b)?a:b;}
静态整数背包(整数W,整数wt[],整数利润[],整数n)
{
//基本情况
如果(n==0 | | W==0)
返回0;
如果(wt[n-1]>W)
返回背包(W,wt,利润,n-1);
返回最大值(利润[n-1]+背包(W-wt[n-1],wt,利润,n-1),
背包(W,wt,利润,n-1);
}