我会尝试更好地解释它。
所以 k = 2. In[]profits = new {1, 2, 3, 1, 6, 10}
对于第一部分,它应该是:
1,2,3
然后在 {1,2,3} 中寻找最小值,即 1。然后将其添加到下一个值 1。所以它将是 1+1。结果将是 {2,3,2}。再次寻找最小值 2 并将其添加到下一个值 6。所以它将是 2+6。结果将是 {3, 2, 8}。最后,对于 {3,2,8} 中的最小值并将其添加到下一个值 10。所以它将是 10+2。结果是 {2, 8, 10}。然后在 2 中寻找最小值。
如果你们至少可以指导我如何做到这一点?
这是测试仪:
import java.util.Arrays ;
/**
Presents some problems to the BillBoard class.
*/
public class BillboardTester {
public static void main(String[] args) {
int[] profits = new int[]{1, 2, 3, 1, 6, 10} ;
int k = 2 ;
System.out.println("Profits: " + Arrays.toString(profits) + " k = " + k) ;
Billboard bb = new Billboard(profits, k) ;
System.out.println("Maximum Profit = " + bb.maximumProfit()) ;
System.out.println(bb) ;
k = 3 ;
profits = new int[]{7, 4, 5, 6, 1, 7, 8, 9, 2, 5} ;
System.out.println("Profits: " + Arrays.toString(profits) + " k = " + k) ;
bb = new Billboard(profits, k) ;
System.out.println("Maximum Profit = " + bb.maximumProfit()) ;
System.out.println(bb) ;
}
}
这是我到目前为止的课程:
public class Billboard {
private int maximumprofit; // The max profit
private int finalcost; // The final cost of removing the billboards
public Billboard(int[]profits, int k) {
for (int i = 0; i < profits.length; i++) {
maximumprofit+= profits[i];
}
}
public int maximumProfit() {
return maximumprofit;
}
}