题目:假设商店货品价格(R)皆不大 100 元(且为整数),若顾客付款P)在 100 元内,求 找给顾客的最少货币个 (张)数 ?(货币面值 50 元(N50),10 元(N10),5 元N5),1 元(N1)四)
时间: 2023-08-27 11:04:03 浏览: 267
根据贪心算法的思想,我们应该优先使用面值较大的货币来找零,因为这样可以尽可能地减少需要找的货币个数。因此,我们可以先尝试用50元面值的货币来找零,如果找零金额仍然大于50元,则继续使用50元面值的货币,直到找零金额小于等于50元为止。接着,我们再用同样的方式使用10元、5元和1元面值的货币来找零。最后,将所使用的货币个数累加起来即可得到最少需要找的货币个数。
以下是一个可能的实现方式(使用Python语言):
```python
def find_min_num_of_coins(amount):
coins = [50, 10, 5, 1] # 面值列表
num_of_coins = 0 # 使用的货币个数
for coin in coins:
while amount >= coin:
amount -= coin
num_of_coins += 1
return num_of_coins
```
其中,`amount`参数表示需要找的零钱金额,函数返回最少需要的货币个数。例如,如果顾客付款为60元,需要找40元的零钱,则调用`find_min_num_of_coins(40)`会返回2,表示最少需要找2个货币。
相关问题
用判定表法做以下题目:假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内 (P),求找给顾客最少货币个(张)数?(货币面值50元10元,5元,1元四种)。
| 条件 | 动作 |
| ---- | ---- |
| R ≤ 0 | 输出错误信息 |
| R > 100 | 输出错误信息 |
| P ≤ 0 | 输出错误信息 |
| P > 100 | 输出错误信息 |
| P < R | 输出错误信息 |
| P = R | 输出 0 |
| P - R ≥ 50 | 输出 (P-R)/50 + 最少货币个数 |
| 10 ≤ P - R < 50 | 输出 (P-R)/10 + 最少货币个数 |
| 5 ≤ P - R < 10 | 输出 (P-R)/5 + 最少货币个数 |
| 1 ≤ P - R < 5 | 输出 (P-R)/1 + 最少货币个数 |
找零钱最佳组合 题目:假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内(P),求找给顾客的最少货币个(张)数?(货币面值50元,10元,5元,1元四种)用等价类划分法设计测试用例,画出表格
根据题目,可以将输入值划分为以下等价类:
1. P小于R,即不需要找零钱。
2. P等于R。
3. P大于R,但是找零钱的面值组合中不包含50元纸币。
4. P大于R,但是找零钱的面值组合中包含50元纸币,但不包含10元纸币。
5. P大于R,但是找零钱的面值组合中包含50元和10元纸币,但不包含5元硬币。
6. P大于R,但是找零钱的面值组合中包含50元、10元和5元,但不包含1元硬币。
7. P大于R,同时找零钱的面值组合中包含50元、10元、5元和1元硬币。
根据以上等价类,可以设计出以下测试用例表格:
| 测试编号 | P | R | 期望输出 |
| -------- | ----- | ---- | -------- |
| 1 | 0 | 10 | 0 |
| 2 | 10 | 10 | 0 |
| 3 | 20 | 10 | 1 |
| 4 | 50 | 10 | 2 |
| 5 | 55 | 10 | 3 |
| 6 | 57 | 10 | 3 |
| 7 | 63 | 10 | 4 |
| 8 | 5 | 10 | 0 |
| 9 | 50 | 50 | 0 |
| 10 | 50 | 55 | 1 |
| 11 | 50 | 57 | 2 |
| 12 | 50 | 63 | 3 |
| 13 | 50 | 75 | 5 |
| 14 | 90 | 75 | 3 |
| 15 | 100 | 75 | 5 |
| 16 | 55 | 50 | 1 |
| 17 | 57 | 50 | 2 |
| 18 | 63 | 50 | 3 |
| 19 | 75 | 50 | 5 |
| 20 | 90 | 50 | 8 |
| 21 | 100 | 50 | 10 |
| 22 | 57 | 55 | 1 |
| 23 | 63 | 55 | 2 |
| 24 | 75 | 55 | 4 |
| 25 | 90 | 55 | 7 |
| 26 | 100 | 55 | 9 |
| 27 | 63 | 57 | 1 |
| 28 | 75 | 57 | 3 |
| 29 | 90 | 57 | 6 |
| 30 | 100 | 57 | 8 |
| 31 | 75 | 63 | 1 |
| 32 | 90 | 63 | 4 |
| 33 | 100 | 63 | 6 |
| 34 | 90 | 75 | 1 |
| 35 | 100 | 75 | 3 |
| 36 | 100 | 100 | 0 |
以上测试用例可以覆盖所有可能的输入值,确保程序在各种情况下的正确性。
阅读全文