码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 贪心算法--找换硬币


    找换硬币

           考虑用最少的硬币数来找N分钱的问题,假设每个硬币的值都是整数。

    a)       请给出一个贪心算法,使得所换硬币包括一角的,五分的,二角五分的和一分的。证明所给出的算法能产生最优解。

    b)      假设可换的硬币的单位是c的幂,也就是c^0,c^1,c^2,c^3……其中整数c>1,k>=1。证明贪心算法总可以产生一个最优解。

    c)      请给出一组是贪心算法不能产生最优解的硬币单位集合。所给集合应当包括一分,以便保证对任意n值都有解。

    d)      请给出一种O(nk)时间的算法,它能够对任意K种不同单位的硬币集合进行找换,假设其中一种硬币单位是一分的。

    解:

    a)       找换硬币的贪心算法思想:

    (1)将找换集合中的元素进行降序排列,CurrentMax指向首元素;

    (2)判断N是否大于找换集合中当前最大元素,如果大于,N=N-CurrentMax;再执行此步骤。如果不大于,则找换集合中的CurrentMax指向下一个元素,执行此步骤。

    (3)若N=0,则找到了找换硬币的方法。

    算法的源代码:

    #include

    int main()

    {

        freopen("data.out","w",stdout);

        int money,s1,s2,s3,s4,p,d,n,q,temp;

        scanf("%d%d%d%d%d",&money,&s1,&s2,&s3,&s4);

        temp=money;

        p = money/s1;   

           if (p >0)

            money -= p*s1;

        d = money/s2;

        if (d >0)

            money -= d*s2;

        n = money/s3;

        if (n >0)

            money -= n*s3;

    q = money/s4;

        if (temp==(p*s1+d*s2+n*s3+q))

           {

             printf("%d is sum %d\n",s1,p);

             printf("%d is sum %d\n",s2,d);

             printf("%d is sum %d\n",s3,n);

             printf("%d is sum %d\n",s4,q);

           }

        else

            printf("Not enough change\n");

       return 0;

    }

    c) 找换集合的元素如果是{1,3,4},被找换的元素如果是10 ,那么采用上述方法得到的找换方法是:4,4,1,1。 而最优的方式是:4,3,3。

  • 相关阅读:
    1x1卷积的作用
    2022年12月计划(cesium for unreal源码抄写+各个视频教程,1主+多副)
    Linux入门攻坚——3、基础命令学习-文件管理、别名、glob、重定向、管道、用户及组管理、权限管理
    Python之前端的学习
    AI绘画:StableDiffusion实操教程-完美世界-魔女(附高清图下载)
    【POJ】1050.To the Max (最大子矩阵和)
    前端uniapp防止页面整体滑动页面顶部以上,设置固定想要固定区域宽高
    【POJ No. 1182】 食物链
    Gitee仓库介绍和项目纳入版本管理+ignore文件配置
    管理RMAN备份_维护RMAN备份和仓库记录
  • 原文地址:https://blog.csdn.net/liuliuhelingdao/article/details/128019755
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号