有1,2,5,10元四种纸币,要求出总金额是10元的时候,一共有几种组合方法,不同顺序也算不同组合。

  |   0 评论   |   0 浏览
//四种面值纸币,分别是1元,2元,5元,10元
    static long moneyCard[] = new long[]{1,2,5,10};
    public static void main(String[] args) {
        printMoney(10, new ArrayList<>());
    }

    /**
     * 总共要抽出总金额是total
     * @param total   总金额是total
     * @param result   存放组合的纸币
     */
    public static void printMoney(long total, ArrayList<Long> result){
        if (total == 0) {
            //总钱数等于0 说明已经分配完了,输出result
            System.out.println(result);
            return;
        } else if (total < 0) {
            //总钱数小于0 说明不符合条件
            return;
        }
        for (int i = 0; i < moneyCard.length; i++) {//只有四种规格纸币,所有每一次取都是从这四种里面拿一个
            ArrayList<Long> newResult = (ArrayList<Long>) result.clone();
            newResult.add(moneyCard[i]);
            printMoney(total - moneyCard[i], newResult);
        }

    }

标题:有1,2,5,10元四种纸币,要求出总金额是10元的时候,一共有几种组合方法,不同顺序也算不同组合。
作者:码农路上
地址:http://wujingjian.club/articles/2021/06/09/1623217650310.html