[统计硬币] 递推/DP

Description

HDU 2566
假设一堆由1分、2分、5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量可以为0)。

Solution

坑题,没给数据范围,只能瞎猜,一发搜索挂掉发现无法去重,但是考虑到该问题满足从1开始分配并无后效性,可以直接递推(类似背包),三种物品可选任意次

Code

Copy
#include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) typedef long long ll; typedef unsigned long long ull; using namespace std; int main() { //freopen("test.txt", "r", stdin); ios::sync_with_stdio(false); int N, M; int ans; int dp[2000][2000]; int n[] = {1,2,5}; cin.tie(0); int T; cin >> T; while (T--) { cin >> N >> M; mem(dp,0); dp[0][0] = 1; for (int i = 0; i < 3; ++i) { for (int j = 1; j <= N; ++j) { for (int k = n[i]; k <= M; ++k) { dp[j][k] += dp[j-1][k-n[i]]; } } } cout << dp[N][M] << endl; } return 0; }
posted @   EZ4ZZW  阅读(124)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
阅读排行:
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程
点击右上角即可分享
微信分享提示