java - Coin change : get the combinations recursively,如何将它们保存到数组中

标签 java arrays recursion combinations

到目前为止,这是我的代码。我想重新找到产生给定金额的所有组合。这是应该打印组合的测试程序,但正如我所料,有一个错误

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


最佳答案

当您尝试在超出数组长度的索引处分配时,Java 数组不会自动增长。因此,以下将始终给出 ArrayIndexOutOfBoundsException (嗯,要么是那个,要么是 NullPointerException :)):

coinsSoFar[coinsSoFar.length] = ...;

最简单的选择可能是使用 ArrayList<Integer> 对于 coinsSoFar , 适本地调整它的大小。

关于java - Coin change : get the combinations recursively,如何将它们保存到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232738/

相关文章:

python - 在python中将节点插入树中

java - 在 Action Bean 中使用 Java 8 ParallelStream 时出现随机 Hibernate 异常

java - Swing :带箭头的弹出框

java - 通过代理网络(如果可用)重定向所有 Android 应用程序网络(使用库)

Python:如何基于变量创建数组的数组?

Javascript 数组根据值排序

c - 递归的大O

java - 过期不可变集合

javascript - 如何在方表中找到一个数字所属的一组数字的索引?

PHP类别树递归