初探贪心算法 -- 使用最少纸币组成指定金额

python实现:

python 复制代码
# 对于任意钱数,求最少张数

n = int(input("money: "))   # 输入钱数
bills = [100, 50, 20, 10, 5, 2, 1]      # 纸币面额种类
total = 0
for b in bills:
    count = n // b  # 整除面额求用的纸币张数
    if count > 0:
        print(f"{b}纸币 张数{count}")
    n -= count * b		# 更新剩余金额
    total += count		# 累加纸币数量
print(f"总共用{total}张纸币")

运行结果:

txt 复制代码
money: 231
100纸币 张数2
20纸币 张数1
10纸币 张数1
1纸币 张数1
总共用5张纸币

c++实现:

cpp 复制代码
#include <iostream>
using namespace std;

int calc(int n) {
    int count = 0;
    int total = 0;
    int b[6] = {100, 50, 10, 5, 2, 1};
    for (int i = 0; i < 6; i++) {
        count = n / b[i];
        if (count > 0) {
            total += count;
            cout << "面额" << b[i] << " " << "张数" << count << endl;
            n -= count * b[i];
        }
    }
    return total;
}

int main() {
    int result = calc(1000);
    cout << result << endl;
}
相关推荐
小柯南敲键盘16 分钟前
跨马翻译:批量图片与视频字幕翻译,支持智能抠图
大数据·人工智能·python·音视频
txzrxz43 分钟前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数
再渊44 分钟前
基因归因到底怎么计算的?
python·深度学习·机器学习
xqqxqxxq1 小时前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
E_ICEBLUE1 小时前
Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分
python·excel
aiqianji1 小时前
有哪些稳定的AI短篇小说写作软件可以推荐?
人工智能·python
闪电悠米1 小时前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~1 小时前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
Ulyanov2 小时前
Python雷达电子对抗仿真引擎(一):打破单体瓶颈,构建微服务与ECS架构的顶层设计
开发语言·python·微服务·云原生·架构·雷达电子对抗
IT方大同2 小时前
C语言分支与循环语句
c语言·开发语言·算法