UVA 674_Coin Change
2016-02-02 10:47
316 查看
题意:
给定一个数,求用1,5,10,25,50有多少种组合方式。分析:
简单计数dp,dp[i][j]表示由前i+1个元素组成j的种数,注意dp[i][0]初始化为1,因为一个元素也不选的方法总是有一种。代码:
#include<iostream> #include<cstring> using namespace std; const int maxn = 7500; long long dp[10][maxn + 5]; int main (void) { int a[5]={1,5,10,25,50}; int n; memset(dp, 0, sizeof(dp)); for(int i = 0; i <=5; i++) dp[i][0] = 1; for(int i = 0; i < 5; i++){ for(int j = 1; j < maxn; j++){ if(j-a[i]>=0){ dp[i+1][j] = dp[i][j]+dp[i+1][j-a[i]]; }else dp[i+1][j] = dp[i][j]; } } while(cin>>n){ cout<<dp[5] <<endl; } }
相关文章推荐
- CentOS 7.x设置自定义开机启动,添加自定义系统服务
- Linux 安装JDK
- 正则表达式小记
- nodejs基础(二)
- SQL Server之内连接 左连接 右连接 全连接 交叉连接
- 关于 自己遇到的内存溢出问题
- Android之代码设置selector
- LeetCode——Path Sum II
- 书签
- 正则表达式
- git文件存储原理解析(八)
- git文件存储原理解析(八)
- vs2008 warning4390
- hdoj 2065“红色病毒”问题
- Spring Aop
- Ubuntu14.04安装nginx稳定版本步骤
- HTTP协议详解
- HDU 5618 Jam's problem again (cdq分治+树状数组)
- windows下使用cpanm进行模块安装
- 【剑指Offer学习】【面试题18 :树的子结构】