与えられた数を構成するのに必要な最小数のコインを返すコードを書こうとしています。私のメソッドへの入力は、有効なコインの配列と、私が作成しようとしている数です。
public static int change(int[] d, int p) {
int[] tempArray = new int[p + 1]; // tempArray to store set
// of coins forming
// answer
for (int i = 1; i <= p; i++) { // cycling up to the wanted value
int min = Integer.MAX_VALUE; // assigning current minimum number of
// coins
for (int value : d) {// cycling through possible values
if (value <= i) {
if (1 + tempArray[i - value] < min) { // if current value is
// less than min
min = 1 + tempArray[i - value];// assign it
}
}
}
tempArray[i] = min; // assign min value to array of coins
}
return tempArray[p];
}
ただし、これはほとんどの場合に機能しますが、次のように入力すると次のようになります。
int[] test = {2,3,4};
System.out.println("answer = " + change(test, 6));
答えは2でなければなりませんよね?しかし、それは印刷されます:
-2147483647
私は何を逃しましたか?