使用%与//运算符实现纸币找零计算器的技术问询
纸币找零计算器实现方案
嘿,看你在做找零计算器的编程作业,先给你梳理下思路,再把你的伪代码优化下,顺便给个可运行的示例参考~
先明确需求:输入金额(比如348美元),输出对应的纸币组合,像$100 $100 $100 $20 $20 $5 $2 $1这样。
优化后的伪代码
你的思路方向是对的,不过可以把逻辑捋得更清晰,避免不必要的重复计数操作:
# 伪代码 1. 提示用户输入需要找零的金额(确保是正整数) 2. 定义按从大到小排序的面额列表:[100, 50, 20, 10, 5, 2, 1] 3. 初始化空列表,用于存储最终的纸币面额 4. 遍历每个面额: a. 计算当前面额可使用的张数:count = 当前剩余金额 // 面额 b. 如果count > 0: i. 将该面额重复count次,添加到结果列表中 ii. 更新剩余金额:剩余金额 = 剩余金额 % 面额 5. 给结果列表中的每个面额加上$符号,拼接成空格分隔的字符串输出
示例代码(Python)
如果用Python实现,代码可以直接满足你的输出要求:
# 获取用户输入 amount = int(input("初始金额(美元):")) # 定义面额顺序 denominations = [100, 50, 20, 10, 5, 2, 1] change = [] # 计算找零组合 for bill in denominations: count = amount // bill if count > 0: change.extend([bill] * count) amount = amount % bill # 格式化输出 print(" ".join(f"${b}" for b in change))
测试输入348的话,输出就是$100 $100 $100 $20 $20 $5 $2 $1,完全符合示例要求~
小提示
- 可以加个输入验证逻辑,处理用户输入非整数、负数的情况,让程序更健壮
- 美元面额刚好适合贪心算法(从大到小取),能保证用最少的纸币张数完成找零;如果换成不满足贪心特性的面额,就需要用动态规划来实现了
内容的提问来源于stack exchange,提问作者Jim421616
相关产品推荐
相关产品推荐

