首先,我们先解释一下贪心算法,贪心算法不是对所有问题都能得到整体最优解,但对范围相当

的许多问题能产生整体最优解,如最小生成树问题、图的单源路径最短问题等。

贪心算法有两个重要的性质:贪心选择性质和最优子结构性质。

其中,贪心选择性质是指,所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。而最优子结构性质是当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

而我接下来要叙述的问题是贪心算法中较为经典的例子,找零钱问题。

在现实生活中,经常遇到找零问题,假设有数目不限的面值为20,10,5,1的硬币。

给出需要找零数,求出找零方案,要求:使用数目最少的硬币。

而我们对于此类问题,贪心算法采取的方式是找钱时,总是选取可供找钱的硬币的最大值。

比如,需要找钱数为25时,找钱方式为20+5,而不是10+10+5。

下面是C语言实现问题的解(VC6.0运行,代码如下:)

#include<stdio.h>
#include <windows.h>
 
void greedyMoney(int m[],int k,int n);
 
int main(void)
{
  int money[] = {20,10,5,1};
  int k;
  k = sizeof(money)/sizeof(money[0]); 
  greedyMoney(money,k,25);
  system("PAUSE");
}
 
/*
  m[]:存放可供找零的面值,降序排列 
    k:可供找零的面值种类数 
    n:需要找零数 
*/
void greedyMoney(int m[],int k,int n)
{
   int i;
   for(i=0;i<k;i++)
   {
      while(n>=m[i] && n>0)
      {
          printf("%d.",m[i]); 
          n = n-m[i];
      }
   } 
   printf("\n");
    
}

需要说明的是,在一些情况下,找零钱问题使用贪心算法并不能得到整体最优解,其结果可能只是最优解的很好近似。

比如,如果提供找零的面值是11,5,1,找零15。
使用贪心算法找零方式为11+1+1+1+1,需要五枚硬币
而最优解为5+5+5,只需要3枚硬币。

C语言贪心算法——找钱相关推荐

  1. c语言贪心算法ppt,c语言(贪心算法).ppt

    c语言(贪心算法).ppt ACM程序设计,杭州电子科技大学 刘春英 ,2018/12/23,2,最近几天,,你 了吗,AC,2018/12/23,3,每周一星(9),qfwr,2018/12/23, ...

  2. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  3. C语言 · 贪心算法

    发现蓝桥杯上好多题目涉及到贪心,决定学一学. 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说:不从整体最优上考虑,而是在某种意义上的局部最优解.其关键是贪心策略的选择,选择的贪心 ...

  4. 贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网

    1.简介 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 贪心算法不是对所有问题都能得到整体最优 ...

  5. 贪心算法 0-1背包c语言,贪心算法0-1背包问题(算法实验代码).pdf

    . 实验三. 0-1 背包问题(贪心算法) 实验代码: #include int max(int a,int b) { if(a>b) return a; else return b; } vo ...

  6. 贪心算法无重叠区间c语言,贪心算法之区间问题.md

    --- title: 贪心算法之区间问题 tags: - Leetcode categories: - Leetcode author: 四叶草 top: false abbrlink: 26230 ...

  7. c语言贪心算法找零问题,贪心算法-找零问题-实验报告

    <贪心算法-找零问题-实验报告>由会员分享,可在线阅读,更多相关<贪心算法-找零问题-实验报告(7页珍藏版)>请在人人文库网上搜索. 1.实验三 课程名称:算法设计与实现 实验 ...

  8. c语言贪心算法零钱问题,贪心算法(2)——找零钱问题

    一.找零钱问题 例题1: 有 1 元,5元,10元,20元,100元,200元的钞票无穷多张.现在使用这些钞票支付X元,最少需要多少张钞票. X = 628 最佳支付方法: 3张200块的,1张20块 ...

  9. 贪心算法解决最优装载问题c语言,贪心算法解决最优装载问题

    <贪心算法解决最优装载问题>由会员分享,可在线阅读,更多相关<贪心算法解决最优装载问题(4页珍藏版)>请在人人文库网上搜索. 1.author : Kevin Black/这个 ...

  10. c语言贪心算法排课,*排课软件常用算法介绍*兴文排课*学校经常用的免费自动排课软件...

    将需要求解的课表问题逐层分解,直到得到一个最小单元的不可在分解.可以直接求出答案的子问题.分解出来的所有子问题按层次关系构成一颗子问题树.树根是课程表问题.课程表问题的解依赖于子问题树中所有子问题的解 ...

最新文章

  1. 扩展欧几里得 POJ 1061
  2. elasticsearch负载均衡节点——客户端节点 node.master: false node.data: false 其他配置和master 数据节点一样...
  3. nacos enablediscoveryclient_Nacos入门指南03 服务发现实践
  4. android关于获取摄像头帧数据转成图片
  5. python安装软件win10_在win10上安装Python和Tensorflow
  6. 计算平均成绩,科目数未知
  7. 【CVPR 2021】基于样本间关系的知识蒸馏:Complementary Relation Contrastive Distillation
  8. 神朔 计算机联锁,计算机联锁系统集中操控方式在宁东铁路中的应用
  9. KEIL MDK的安装(包含HAL库)
  10. 工商服务代理行业解决方案
  11. 一个执着淫欲的乐受者会认为他的乐受是在色、想、行、识中;认为色、想、行、识是我,在受中住。...
  12. 开箱即用,Hexo博客的github+server自动部署
  13. 【LAB4-Cisco】OSPF邻居建立过程与LSDB分析
  14. 【地平线开发板 模型转换】将pytorch生成的onnx模型转换成.bin模型
  15. Poj 1125 Stockbroker Grapevine(Floyd算法求结点对的最短路径问题)
  16. 是时候给出休谟问题的数学推导了
  17. 图片压缩利器Image Optimizer,一键压缩图像体积和尺寸清晰无损
  18. SLAM系列——视觉里程计(特征法)
  19. Best regards缩写是什么
  20. jzoj6486 向日葵人生 (仙人掌)

热门文章

  1. vim-airline use patched fonts
  2. 【欢聚时代】HR独家传授YY笔试面经小秘诀!
  3. 身份证验证接口有哪些验证类型
  4. C++大型项目开发约束
  5. DPDK初始化hugepages
  6. Beyond Compare不能打开*.te文件解决方案
  7. python实现星号打印出金字塔
  8. 计算机英语单词练习一
  9. android 用blend设计,Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合
  10. CDC的DrawText