钱币兑换问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14528    Accepted Submission(s): 8784

Problem Description

在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。

Input

每行只有一个正整数N,N小于32768。

Output

对应每个输入,输出兑换方法数。

Sample Input

2934

12553

Sample Output

718831

13137761

Author

SmallBeer(CML)

解题思路:

方法一:

用 dp[i][j] 来代表使用前 i 种硬币组成 j 的方案数,可以推出:

dp[i][j] = dp[i-1][j] + dp[i][j-i];

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
int dp[5][33000];
int main()
{#ifndef ONLINE_JUDGE//freopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int n;while(scanf("%d",&n)!=EOF) {ms(dp);dp[1][0] = 1;dp[2][0] = 1; dp[2][1] = 1;dp[3][0] = 1; dp[3][1] = 1; dp[3][2] = 2;for(int i=1;i<=3;i++) {for(int j=i;j<=n;j++) {dp[i][j] = dp[i-1][j] + dp[i][j-i];}}printf("%d\n",dp[3][n]);}return 0;
}

方法二:

由于此题与完全背包问题类似,所以我们还可以将其优化为一维的dp数组

用 dp[i] 代表组成容量为 i 的方案数

dp[j] = dp[j] + dp[j-i];

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
int dp[33000];
int main()
{#ifndef ONLINE_JUDGE//freopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int n;while(scanf("%d",&n)!=EOF) {ms(dp);dp[0] = 1;for(int i=1;i<=3;i++) {for(int j=i;j<=n;j++) {dp[j] = dp[j] + dp[j-i];}}printf("%d\n",dp[n]);}return 0;
}

HDU1284——钱币兑换问题【dp】相关推荐

  1. HDU-1284:钱币兑换问题 推理+动态规划(dp)

    文章目录 题目大意: 题目链接HDU 1284(点击可进入网页提交) 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. 输入: 每行只有一个正整数N, ...

  2. hdu1284钱币兑换问题

    这道题目跟之前做过的关于什么波系数很像,因为之前做过了,现在也就不做了 f[1]=1;  f[2]=2;  f[3]=2;  f[4]=4;  f[5]=6;...... f[n]=f[n-1]+f[ ...

  3. hdu1284经典钱币兑换问题

    钱币兑换问题. 题目 http://acm.hdu.edu.cn/showproblem.php?pid=1284 完全背包. 这种是求背包问题最多的组合方案 参考了一些资料   http://blo ...

  4. HDU 1284 钱币兑换问题 (动态规划 背包方案数)

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 钱币兑换问题c语言编程,HDU 1284 钱币兑换问题

    题目: 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  6. 动态规划之钱币兑换问题

    钱币兑换问题 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Output 对应每个输入,输出 ...

  7. 钞票兑换java编程题,HDOJ 题目1284钱币兑换问题(动态规划,完全背包) | 学步园...

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. HDU 1284 钱币兑换问题 (完全背包)

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. hdu 1284 钱币兑换问题

    hdu 1284 钱币兑换问题 母函数 //hdu 1284 母函数// 1分的 2分的 3分的 //母函数计算:(1+x+x^2+x^3+...)*(1+x^2+x^4+...)*(1+x^3+x^ ...

最新文章

  1. Vue 监听路由变化的三种方式
  2. percona xtrabackupd定期做全备,增量备份shell脚本
  3. 如何在vim保存时获得sudo权限
  4. 决定系数R2真的可靠吗?
  5. python中参数传递_python中参数传递
  6. 猫:君主般的眼神 监视领地。 狗
  7. mysql与win8有冲突吗_Win8系统Defender功能和安全软件冲突怎么办
  8. python 钉钉机器人发送图片_利用Python自动发送钉钉数据消息
  9. jedis 用连接池时超时返回值类型错误
  10. PYTORCH批标准化
  11. 常见的C++应用领域有哪些?
  12. Android Studio如何隐藏系统的状态栏
  13. python qq聊天机器人_Python QQBot库的QQ聊天机器人
  14. 安卓bin固件文件编辑器_摄像头恶意固件制作指南
  15. 国产web端开源ui组件-后台前端ui界面组件库
  16. 转行学习java自学好还是去培训学校学习好?系统学习路线推荐
  17. QCon全球软件开发大会(北京站)将于4月25日开幕
  18. python用一行代码画个迷宫_[代码全屏查看]-用turtle不断的画回字迷宫
  19. 台式计算机无线接入,台式电脑可以无线连接wifi吗
  20. 用Java语言开发物联网设备应用(5)

热门文章

  1. ifix虚拟服务器,ifix的客户端和服务器
  2. svm回归matlab工具箱很慢,PSO优化SVM参数进行回归预测,结果很不理想
  3. BugkuCTF-MISC题细心的大象
  4. BugkuCTF-Reverse题easy-100(LCTF)
  5. python3.0实例_python3.0 模拟用户登录,三次错误锁定的实例
  6. android摄像头矩形框提取_视频图像摄像头跟踪的上位机系统设计
  7. sql数据导入错误代码: 0x80004005_SQL入门第八关 项目实战
  8. 哈尔滨大学计算机和金融,山东153所大学最新排名,46所公办本科,看看有你喜欢的吗...
  9. c语言中文件是如何存储的,急求如何将下列C语言程序数据存储到文件中?
  10. 网络学习云平台 计算机基础应用,计算机应用基础网络自主学习平台使用说明.doc...