找零钱最佳组合:假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内(P),求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种,试根据边界值法设计测试用例。
时间: 2023-11-16 17:05:11 浏览: 196
边界值测试用例设计:
1. 当货品价格为1元,顾客付款为1元时,期望找零0张货币。
2. 当货品价格为100元,顾客付款为100元时,期望找零0张货币。
3. 当货品价格为101元,顾客付款为100元时,期望返回错误提示信息。
4. 当货品价格为100元,顾客付款为101元时,期望返回错误提示信息。
5. 当货品价格为50元,顾客付款为100元时,期望找零1张50元货币。
6. 当货品价格为10元,顾客付款为20元时,期望找零1张10元货币。
7. 当货品价格为5元,顾客付款为10元时,期望找零1张5元货币。
8. 当货品价格为1元,顾客付款为10元时,期望找零1张10元货币和4张1元货币。
9. 当货品价格为38元,顾客付款为100元时,期望找零1张50元货币,1张10元货币和2张1元货币。
10. 当货品价格为42元,顾客付款为50元时,期望找零1张5元货币和3张1元货币。
相关问题
html设计找零钱最佳组合假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1)四种
面额。以下是一个简单的HTML设计,可以让顾客输入商品价格和付款金额,然后显示最佳找零钱组合:
<!DOCTYPE html>
<html>
<head>
<title>找零钱计算器</title>
</head>
<body>
<h1>找零钱计算器</h1>
<form>
<label for="price">商品价格:</label>
<input type="number" id="price" name="price"><br><br>
<label for="payment">付款金额:</label>
<input type="number" id="payment" name="payment"><br><br>
<button type="button" onclick="calculate()">计算找零钱</button>
</form>
<br>
<p id="result"></p>
<script>
function calculate() {
var price = parseInt(document.getElementById("price").value);
var payment = parseInt(document.getElementById("payment").value);
var change = payment - price;
var n50 = Math.floor(change / 50);
var n10 = Math.floor((change - n50 * 50) / 10);
var n5 = Math.floor((change - n50 * 50 - n10 * 10) / 5);
var n1 = change - n50 * 50 - n10 * 10 - n5 * 5;
var result = "找零钱组合为:";
if (n50 > 0) {
result += n50 + "张50元 ";
}
if (n10 > 0) {
result += n10 + "张10元 ";
}
if (n5 > 0) {
result += n5 + "张5元 ";
}
if (n1 > 0) {
result += n1 + "张1元";
}
document.getElementById("result").innerHTML = result;
}
</script>
</body>
</html>
注意,这个HTML设计使用了JavaScript来实现计算找零钱的功能。在用户点击“计算找零钱”按钮之后,JavaScript会读取用户输入的商品价格和付款金额,然后计算最佳找零钱组合,并将结果显示在页面上。由于这个HTML设计比较简单,可能需要根据实际情况进行修改和优化。
假设商店货品价格都不大于100元(且为整数) , 若顾客付款在100元内, 现有一个程序能在每位顾客付款后给出找零钱的最佳组合( 找给顾客货币张数最少)。假定此商店的货币面值只包括: 50元、 20元、10元、 5元、 2
元、1元。请问如何设计一个程序来实现这个功能?
首先,我们可以将所有的货币面值存入一个数组中,例如:
```
int[] coins = {50, 20, 10, 5, 2, 1};
```
然后,对于每一个顾客的付款金额,我们可以通过以下的贪心算法来计算最少的找零钱张数:
1. 初始化一个空的记录找零钱张数的数组 change。
2. 对于每一个货币面值 coin,循环执行以下步骤:
1. 计算当前面值 coin 可以找零的最大张数:maxCount = payment / coin。
2. 将 change 数组中对应面值 coin 的数量设为 maxCount。
3. 更新 payment 的值为 payment - maxCount * coin。
4. 如果 payment 的值已经为 0,说明已经找零完毕,退出循环。
3. 统计 change 数组中所有面值的数量之和,即为找零钱的最少张数。
下面是具体的 Java 代码实现:
```
public static int[] getChange(int payment) {
int[] coins = {50, 20, 10, 5, 2, 1};
int[] change = new int[coins.length];
for (int i = 0; i < coins.length && payment > 0; i++) {
int maxCount = payment / coins[i];
change[i] = maxCount;
payment -= maxCount * coins[i];
}
return change;
}
public static int getMinChangeCount(int payment) {
int[] change = getChange(payment);
int count = 0;
for (int i = 0; i < change.length; i++) {
count += change[i];
}
return count;
}
```
可以通过调用 `getChange` 方法来获取找零钱的组合,通过调用 `getMinChangeCount` 方法来获取最少的找零钱张数。例如:
```
int payment = 87;
int[] change = getChange(payment);
int count = getMinChangeCount(payment);
System.out.println("Payment: " + payment);
System.out.println("Change: " + Arrays.toString(change));
System.out.println("Min change count: " + count);
```
输出结果为:
```
Payment: 87
Change: [1, 1, 1, 0, 1, 0]
Min change count: 4
```
其中,change 数组表示找零钱的组合为 50 元1张、20 元1张、10 元1张、5 元0张、2 元1张、1 元0张;最少的找零钱张数为 4 张。
阅读全文