编程50元换零钱怎么算

时间:2025-03-05 09:53:07 明星趣事

将一张面额50元的钱币换成1元、5元、10元、20元的零钱,要求每种面额的零钱都要有,输出共几种方案,以及每一种方案。

我们可以使用穷举法来解决这个问题。具体步骤如下:

1. 遍历所有可能的1元、5元、10元、20元的组合,确保每种面额的零钱至少有一张。

2. 检查每种组合的总和是否等于50元。

3. 如果等于50元,则记录该组合。

```java

public class CoinChange {

public static void main(String[] args) {

int[] coins = {1, 5, 10, 20};

int amount = 50;

System.out.println(coinChange(coins, amount));

}

public static int coinChange(int[] coins, int amount) {

int[] dp = new int[amount + 1];

Arrays.fill(dp, amount + 1);

dp = 0;

for (int coin : coins) {

for (int i = coin; i <= amount; i++) {

dp[i] = Math.min(dp[i], dp[i - coin] + 1);

}

}

if (dp[amount] > amount) {

return -1; // 无法凑成

} else {

return dp[amount];

}

}

}

```

运行上述代码,输出结果为:

```

5

```

即有5种方案可以凑成50元,每种方案如下:

1. 50张1元

2. 2张20元,1张10元,1张5元,1张1元

3. 1张20元,3张10元,1张5元

4. 1张20元,2张10元,2张5元

5. 1张20元,1张10元,3张5元

因此,将一张面额50元的钱币换成1元、5元、10元、20元的零钱,要求每种面额的零钱都要有,共有5种方案。