【动态规划法】硬币找零问题

简介: 【动态规划法】硬币找零问题

 1、题目如下:

【问题描述】

给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], … c[n],假设每种硬币的数量是无限的。同时还有一个总金额 k,编写一个动态规划计算出最少需要几枚硬币凑出这个金额 k?

【样例输入】

12

1 2 5

【样例输出】

3

【样例说明】输入第一行为金额总数,第二行为硬币的不同面值;输出为需要的最少硬币数

2、算法思路

1、方法:动态规划法

2、dp[0]=0,从dp[1]开始,运算直至dp[MoneySum]。

3、动态转移方程:if(i-c[j]>=0) dp[i]=min(dp[i],dp[i-c[j]]+1);

注:输入数据的第二行以'\n'结尾,其中数据以空格间隔(详见代码)。

3、代码如下:

#include <bits/stdc++.h>
using namespace std;
#define N  10000
int MoneySum;//金额和 
int c[N];//硬币金额存储数组 
int dp[N];//所需最少硬币个数存储数组 
int main(){
  cin>>MoneySum;//输入金额和 
  int n=0;//记录硬币种类个数 
  for (int i= 0;i<=9; i++)
  {
    cin >> c[i];
    n++;//硬币种类个数加1 
    if (getchar()=='\n') break;//输入回车,则结束 
  }
  for(int i=0;i<=MoneySum;i++){//赋初值10000 
    dp[i]=N;
  }
  dp[0]=0;//记得将dp[0]初始化为0,当金额为0时,所需最少金币为0 
  for(int i=1;i<=MoneySum;i++){
    for(int j=0;j<n;j++){
      if(i-c[j]>=0) dp[i]=min(dp[i],dp[i-c[j]]+1);
      //cout<<"dp["<<i<<"]:"<<dp[i]<<endl;
    }
  }
  cout<<dp[MoneySum]<<endl;
  return 0;
}

image.gif


目录
相关文章
|
11月前
|
XML JSON API
淘宝/天猫获得淘宝商品详情 API 返回值说明
API(Application Programming Interface),即应用程序编程接口,是一组用于构建软件应用程序的协议、例程和工具。它定义了不同软件组件之间如何进行交互,就像是软件世界中的 “语言翻译官” 或者 “沟通桥梁”。 简单来说,当你使用一个软件应用(比如手机上的天气应用)去获取天气数据时,这个应用就是通过 API 接口向提供天气数据的服务器发送请求,服务器收到请求后,通过 API 接口返回天气数据给应用,然后应用才能把天气信息展示给你。
133 2
钉钉宜搭6月15日版本更新:手写签名和定位组件来啦!
本次版本更新主要针对流程、表单进行了组件能力升级,新增了手写签名和定位2个组件,同时升级地址、人员和部门3个组件。
2841 0
钉钉宜搭6月15日版本更新:手写签名和定位组件来啦!
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
运维 监控 开发者
tasklist命令的应用实例
tasklist命令的应用实例 原创
349 7
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
3810 1
阿里云服务器开放端口完整图文教程
|
8月前
|
存储 关系型数据库 BI
巧用 Navicat URI,一键实现团队 BI 工作区分享
今天,我们将手把手教大家如何通过Navicat软件实现阿里云 PolarDB 团队快速分享的操作。
|
前端开发 小程序 JavaScript
小程序 canvas 生成海报 一次搞掂
小程序 canvas 生成海报 一次搞掂
227 1
|
JavaScript 前端开发 API
移动端滚动分页解决方案
移动端滚动分页解决方案
236 4
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
本文介绍如何在Taro项目中配置深色模式。通过在`src/app.config.ts`设置`darkmode`选项和在`theme.json`中定义主题变量,可以实现跟随系统主题的界面风格切换。
430 0
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
|
存储 NoSQL Redis
2)Redis 的键值对长什么样子,又是怎么存储的?
2)Redis 的键值对长什么样子,又是怎么存储的?
275 0