【发布时间】:2011-11-30 10:05:18
【问题描述】:
我在 java 中有一个函数,它是用递归算法编写的,需要以迭代形式编写。问题是我不知道从哪里开始围绕一个新算法来解决这个问题。这是我正在处理的任务。
考虑以下计算问题:
假设您是一名顾问,并且您有一系列n 潜在的咨询工作,分别支付A[0],A[1],..,A[n-1] 美元(所以工作0 支付A[0] 美元,工作1 支付A[1] 美元等)。
另外,i 的工作从i(i = 0 ; : : : ; n 1 ) 开始。
但是,每个作业需要 2 天,因此您不能执行任何两个连续作业。目标是确定最大金额,用F(n)表示;您可以从从n 工作A[0] 到A[n-1] 中选择的有效工作计划中赚取收入
:
例如,考虑以下输入数组:
0 1 2 3 4 5
A 5 6 8 6 2 4
一个最佳的时间表是做工作0 ; 2 ;和5;金额
赚了,F(6) = A[0] + A [2] + A [5] = 17;尽可能大。请注意,这
是一个有效的时间表,因为不包括两个连续的作业。
解决这个问题的递归版本的函数如下:
public static int jobScheduleRecursive(int[] A, int n)
{
n = A.length;
if(n == 0){return 0;}
else if(n == 1){return A[0];}
else if(n >= 2){return max(jobScheduleRecursive(A, (n-1)), (A[n-1])
+ jobScheduleRecursive(A, n-2));}
else return -1;
}
总而言之,我必须想出一个迭代算法来完成这项工作。唯一的问题是我不知道如何进行。如果有任何建议可以引导我走向正确的方向,我将不胜感激。
【问题讨论】:
-
为什么你接受一个参数然后立即设置它的值?为什么要先拿它?
标签: java arrays recursion integer iteration