2
여기까지 제 코드가 있습니다. 주어진 돈의 합을 생산하는 모든 조합을 재귀 적으로 찾고 싶습니다. 이것은 콤보를 인쇄해야합니다 테스트 프로그램입니다,하지만 난 excpected 같은 오류코인 변경 : 조합을 재귀 적으로 가져오고, 배열에 저장하는 방법
는 ArrayIndexOutOfBoundsException있다 : 두 행에 0
. 제발 도와 줘, 이해가 안돼. 인쇄 대신 배열에 저장하는 방법은 무엇입니까? 당신이 배열의 길이를 넘어 인덱스에 할당 할 때
import java.util.Scanner;
public class CoinChange {
public static void printCombos(int sum, int sumSoFar, int[] coinsSoFar) {
int[] coins = {5, 10, 20, 50};
if (sum == sumSoFar) {
System.out.print(coinsSoFar);
}
else if (sum > sumSoFar) {
for (int i = 0; i < 4; i++) {
sumSoFar = sumSoFar + coins[i];
coinsSoFar[coinsSoFar.length] = coins[i]; // error row
printCombos(sum, sumSoFar, coinsSoFar);
}
}
}
public static void main (String[]args) {
Scanner read = new Scanner(System.in);
int sum = read.nextInt();
int[] empty = {};
printCombos(sum, 0, empty); //error row
}
}
나는 당신의 고문에 문제가 있다고 생각합니다. sumSoFar와 coinsSoar를 반복적으로 증가시키고 있습니다. 따라서 첫 번째 동전보다 더 큰 금액을 얻으면 예제를 통해 첫 번째 동전을 사용하지 않는 해결책을 찾지 못할 것입니다. 그리고 그 문제를 해결하면 중복 된 해결책을 찾을 수 있습니다 ... – pgras