有1,2,5,10元四种纸币,要求出总金额是10元的时候,一共有几种组合方法,不同顺序也算不同组合。
//四种面值纸币,分别是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