这就是我想要做的:我有一个大小为 N 的 double[](N 不会大于 500,但是这个程序的不同应用程序会有不同的 N)。我现在想找出我可以达到给定平均值的组合。例如:
我要查找的数字是 3。双精度数组中只有 2 个项目 {6,2}
程序应该循环并告诉我 1x[0] 和 3x[1] = 6+2+2+2 / 4 = 3 是最简单的方法。我还想将这些因素限制在最多 10,000 个(即最多可以是 10,000[0]+10,000[1])
我正在尝试使用嵌套的 while 循环,但无法使其正常工作。请问是跳板吗?
谢谢
编辑:这是我到目前为止所拥有的。它适用于两种给定的组合,但由于每个因素都需要一个 for 循环,因此实施起来会非常复杂。
public class Test {
public static void main(String[] args) {
double[] returns = {6,2};
double givenReturn = 3;
double maxStock = 5000;
double calcReturn = 0;
for (int a = 0; a < maxStock && (givenReturn != calcReturn); a++) {//first level
for (int b = 0; b < maxStock && (givenReturn != calcReturn); b++) {//second level
calcReturn = (a*returns[0]+b*returns[1])/(a+b);
if(calcReturn == givenReturn){
System.out.println(a+" "+b);
break;
}
}
}
}
}
程序成功打印:“1 3”。
如何使程序与十个不同返回的数组一起工作?