一.前言

今天又上了一节算法设计与分析课,头疼,学了动态规划的思想解决最值问题,行了,不啰嗦了,直接上干货干吧!!!

二.内容

题目:

三.分析过程

符合动态规划问题最值问题,故用动态规划来求解。


1.确定状态

本题中用一维数组就行,a[i]代表解决问题所用的最少硬币数(a[i]详见后续代码)
当最后一步硬币面额可以取2,5,7时。前几枚硬币(k-1枚硬币)的币数为f(25),f(22),f(20).总次数就为f(25)+1,f(22)+1,f(20)+1中最小的值了。(f(25),f(22),f(20)只是变量,目前次数不确定)

2.转移方程(就是将上面的思路一般化)

3.确定初始条件和边界情况

f(0)=0很好理解,买一本需要0元,还需要付硬币吗?自然是硬币数自然是0,f(负数)=无穷大,也好理解,当买一本书需要负元时,这种情况当然不存在,(你买一本书,别人还倒贴你钱,孩子你想多,这种美事当然不存在),所以这种情况不可以取,又是用求三个的最小值,所以用正无穷表示。
4.计算顺序
(我们倒推,当然正着来求解啊,一般来说,动态规划问题都是O(n),用数组保留原问题的解)

四.效果图(本例用10000表示无穷大)

五.代码(这是我喜欢的一部分,不知道怎么了,今天居然废话了一堆,噼里啪啦讲了一堆,行了,不继续废话了,直接肝)

#include<stdio.h>
#define M 10000 //M表示无穷
#define Max 1000
int main(){int min(int a,int b,int c);int a[Max];//用来存储次数int count=0;//计数换行 int f_i2,f_i5,f_i7;int i;//循环变量a[0]=0;for(i=1;i<=27;i++){if((i-2)<0){f_i2=M;}else{f_i2=a[i-2];} if((i-5)<0){f_i5=M;}else{f_i5=a[i-5];} if((i-7)<0){f_i7=M;}else{f_i7=a[i-7];} a[i]=min(f_i2+1,f_i5+1,f_i7+1);}for(i=0;i<28;i++){printf("%d ",a[i]);count++;if(count%5==0){printf("\n");}}return 0;
}int min(int a,int b,int c){//求三个数的最小值int min_n;min_n=a<b?a:b;return min_n<c?min_n:c;
}

动态规划问题中找零问题 --C语言实现相关推荐

  1. java动态规划凑硬币问题,详解动态规划最少硬币找零问题--JavaScript实现

    硬币找零问题是动态规划的一个经典问题,其中最少硬币找零是一个变种,本篇将参照上一篇01背包问题的解题思路,来详细讲解一下最少硬币找零问题.如果你需要查看上一篇,可以点击下面链接: 详解动态规划01背包 ...

  2. 动态规划实战--硬币找零问题

    上一篇文章上提到硬币找零的例子,现在我们实战动态规划就从硬币找零开始 问题描述: 给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], - c[n],同时还有一个总金额 k,编写一 ...

  3. 动态规划解决硬币找零问题

    题目描述:给定不同面额的硬币 coins 和一个需要找零的金额 n.编写一个函数来计算可以凑成金额n所需的最少的硬币个数.并求出所需硬币的所有面额并输出.(硬币可重复多次使用) 动态规划算法通常用于求 ...

  4. 动态规划——最少硬币找零问题(python)

    1. 问题描述 2. 思路 刚开始是想利用贪心算法.假如要找的零钱总额为49元,先找10块的,可以找40块,再继续找5块的,可以找5块,再继续找2块的,可以找4块.找够49元的最少纸币数为4 + 1 ...

  5. c语言实现在数组中找一个数字显示,C语言找出数组中的特定元素的算法解析

    问题描述:一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它.能否只用一个额外数组和少量其它空间实现. 思路:如果能用两个辅助数组,那么相对 ...

  6. 【LeetCode】860. 柠檬水找零(C语言)

    贪心算法,创造更大利益-- bool lemonadeChange(int* bills, int billsSize){int c5=0,c10=0,c20=0,flag=0;for(int i=0 ...

  7. 从自动贩卖机找零看Python中的动态规划问题

    原文:http://www.jianshu.com/p/144db81341a3 从自动贩卖机找零看Python中的动态规划问题 问题描述 假设在某国存在[1,x1,x2,x3,...,xn]多种货币 ...

  8. 动态规划在求解硬币问题中的应用(JAVA)--币制最大化、找零问题、硬币收集问题

    动态规划:这种算法思想多用来求解最优化问题,因此这里存在一个最优化法则,法则指出最优化问题任一实例的最优解,都是由其子实例的最优解构成的.一般来说,自底向上的动态规划更容易设计,但是带有记忆功能的自顶 ...

  9. python找零方案_从自动贩卖机找零看Python中的动态规划问题

    原文:http://www.jianshu.com/p/144db81341a3 从自动贩卖机找零看Python中的动态规划问题 问题描述 假设在某国存在[1,x1,x2,x3,...,xn]多种货币 ...

最新文章

  1. 将Quartz.NET集成到 Castle中
  2. Fragment详解之五——Fragment间参数传递
  3. 四参数坐标转换c++_手持GPS的三参数计算方法
  4. 关于JDBC的一些笔记
  5. 基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现
  6. webStorm编辑器(左侧目录)如何显示、隐藏?
  7. numpy.cov() 计算协方差矩阵
  8. syn flood 攻击 c 语言源代码,利用Python和C实现syn flood攻击
  9. IBM:利用闪存提速实时分析 掘金大数据
  10. LitJson使用范例
  11. win10误删的注册表能还原吗_win10注册表删错了怎么办_win10注册表删错东西如何恢复-win7之家...
  12. 计算机上无法获取,电脑无法获取有效ip 修复ip地址配置方法
  13. 使用studio 3T按日期查询mongodb
  14. 2021年煤气考试题库及煤气试题及解析
  15. 四/八电极测脂技术做蓝牙八电极脂肪秤方案
  16. Gridea+Coding Page个人网站搭建
  17. 教大家如何利用电脑发射wifi信号 供其他设备免费高速上网!
  18. 运行提示‘错误: 找不到或无法加载主类 Engine.Runner’;修改文件夹为package
  19. 如何对ChatGPT进行Prompt逆向工程, Prompt engineering生成Prompt的核心是给出例子,反推生成例子的通用Prompt模板mjourney,给出图片生成该图的Prompt
  20. 跑腿app开发软件需要具体哪些功能

热门文章

  1. python操作windows库_python大佬养成计划----win下对数据库的操作
  2. 基本定时器TIM6和TIM7使用
  3. 卷积神经网络CNN(8)—— Pix2Pix Application -- Aerialmap Lane Line Detection (Pix2Pix应用:航拍图车道线检测)
  4. Nature | 基于单细胞RNA测序绘制人类肺组织分子细胞图谱,成功鉴定多种未知细胞类型...
  5. 好色之旅-画图三字经
  6. 界址点圆圈怎么生成_大千世界怎么钓鱼?大千世界钓鱼方法及灵气之水获取攻略...
  7. P1428 小鱼比可爱(python3实现)
  8. 产品经理职业发展前景的剖析
  9. 【Ant Design Vue】之layout布局
  10. C++ opengl 点的绘制