/**
*
* @param d
* currency divisions
* @param p
* target
* @return number of coins
*/
public static int change(int[] d, int p) {
int[] tempArray = new int[p*2]; // 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 coints
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[1 - value];//assign it
}
}
}
tempArray[i] = min; //assign min value to array of coins
}
return tempArray[p];
}
任何人都可以帮我看看为什么这不起作用吗?该方法意味着给出表示硬币的值的输入,它具有无限数量的这些用于形成整数p的coint,该方法是返回用于获得p的最小硬币数。
答案 0 :(得分:1)
tempArray在所有索引上初始化为0。 使用tempArray [1-value]基本上给你0。 因此,从1到p的所有索引都具有值1 + tempArray [1-value] 这是1.此外,tempArray [1-value]是一个negetive索引。我认为你的意思是tempArray [i-value]