找零钱问题 设计算法解决找零钱问题。 输入说明: 付钱数 商品价格 输入说明: 找钱数 输入示例: 100 37.83 输出示例: 100元:0 50元:1 10元:1 5元:0 2元:1 1元:0 1角:1 5分:1 1分:2
时间: 2024-02-24 14:53:17 浏览: 33
好的,这是一个经典的找零钱问题,可以使用贪心算法来解决。
具体步骤如下:
1. 计算需要找回的钱数 change = 付钱数 - 商品价格
2. 初始化一个钞票面额数组 denominations,按面额从大到小排序,比如 denominations = [100, 50, 10, 5, 2, 1, 0.1, 0.05, 0.01]
3. 遍历钞票面额数组,对于每个面额 denomination,计算可以找回的数量 count = change // denomination,更新 change = change - count * denomination
4. 将每个面额 denomination 对应的数量 count 存入一个字典 result 中,比如 result = {100: 0, 50: 1, 10: 1, 5: 0, 2: 1, 1: 0, 0.1: 1, 0.05: 1, 0.01: 2}
最后,将 result 中的内容按照题目要求输出即可。
以下是Python代码实现:
```python
def find_change(paid, price):
change = round(paid - price, 2)
denominations = [100, 50, 10, 5, 2, 1, 0.1, 0.05, 0.01]
result = {}
for d in denominations:
count = int(change // d)
result[d] = count
change -= count * d
for d, count in result.items():
print(f'{d}元:{count}', end=' ')
```
这里使用 round 函数对计算结果进行了四舍五入,避免了浮点数精度问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)