これが私がやりたいことです:私はサイズNのdouble []を持っています(Nは500より大きくはありませんが、このプログラムの異なるアプリケーションは異なるNを持ちます)。ここで、特定の平均を達成できる組み合わせを調べたいと思います。例えば:
私が探している数は3です。double配列には2つの項目しかありません{6,2}
プログラムはループして、1x[0]と3x[1] = 6 + 2 + 2 + 2/4=3がこれに到達する最も簡単な方法であることを教えてくれるはずです。また、これらの要素を最大で10,000に制限したいと思います(つまり、最大10,000 [0] +10,000 [1]にすることができます)。
ネストされたwhileループを試していましたが、機能させることができませんでした。ジャンプスタートしてください?
ありがとう
編集:これが私がこれまでに持っているものです。これは、指定された2つの組み合わせで機能しますが、各要素に1つの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;
}
}
}
}
}
プログラムは正常に「13」を出力します。
たとえば、10個の異なるリターンの配列を使用してプログラムを機能させるにはどうすればよいですか?