当前位置: 首页 > news >正文

经典算法 求解硬币组成问题

求解硬币组成问题

题目描述

实现一个算法求解组成硬币问题。介绍如下:

假设有面值给定的一些硬币,以及给定的总合值,问构成总合值的方法有多少种。


输入描述

  • 第一行包含两个数字 N, M
    • N 表示硬币面值的种类数
    • M 表示给定的总合值
  • 第二行包含 N 个数字 Ai,表示每种硬币的面值。

数据范围:

  • 1 ≤ N, M, Ai ≤ 1000
  • 每种面值的硬币都有无限多个

输出描述

输出一行,为构成总合值的方法数。


输入输出样例

输入

3 3
1 2 3

输出

3

c++代码

#include<bits/stdc++.h>using namespace std;int main() {int N, M;cin >> N >> M;vector<int> dp(M + 1), arr(N);for (int i = 0; i < N; i++) cin >> arr[i];dp[0] = 1;for (int i = 0; i < N; i++) {for (int j = arr[i]; j <= M; j++) {dp[j] += dp[j - arr[i]];}}dp[0] = 0;cout << dp[M];return 0;
}//by wqs

算法解析

这个题目要求1 2和2 1是同一组合,所有我们规定第一层循环为前i个硬币而且,最后一个硬币是i的组合为多少,这样就不会出现2 1这样的情况了。

http://www.dtcms.com/a/169689.html

相关文章:

  • 基于大模型的肾结石诊疗全流程风险预测与方案制定研究报告
  • 软件测评如何保障质量与提升体验?从五方面详细说说
  • JSON 处理笔记
  • 接上篇,解决FramePack启动报错:“httpx.ReadError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。“的问题
  • 在c++中,char定义的变量取地址时,为什么会输出 “烫烫烫...“?
  • 【在Spring Boot中集成Redis】
  • LeetCode - 1137.第N个泰波那契数
  • 学习黑客色即是空
  • python使用cv2在图片上标点
  • 二、shell脚本--变量与数据类型
  • c++_2011 NOIP 普及组 (1)
  • WebSocket分布式实现方案
  • 【LLaMA-Factory实战】1.3命令行深度操作:YAML配置与多GPU训练全解析
  • 数据库 1.0
  • wpf CommandParameter 传递MouseWheelEventArgs参数 ,用 MvvmLight 实现
  • 里氏替换原则(LSP)
  • Java 网络安全新技术:构建面向未来的防御体系
  • 强化学习--2.数学
  • 【Java学习】通配符?
  • 内存性能测试方法
  • 如何通过文理工三类AI助理赋能HI,从而,颠覆“隔行如隔山”的旧观念和“十万小时定律”的成长限制
  • 穿越数据森林与网络迷宫:树与图上动态规划实战指南
  • 【CF】Day50——Codeforces Round 960 (Div. 2) BCD
  • AVFormatContext 再分析零
  • 《告别试错式开发:TDD的精准质量锻造术》
  • Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录
  • 分布式事务解决方案
  • 生成对抗网络(GAN, Generative Adversarial Network)​
  • ES6/ES11知识点
  • 深入理解C++类型转换:从基础到高级应用