Lightoj 1231 - Coin Change (I) (裸裸的多重背包)
2015-11-06 15:43
387 查看
题目链接:
Lightoj 1231 - Coin Change (I)
题目描述:
就是有n种硬币,每种硬币有两个属性(价值,数目)。问用给定的硬币组成K面值,有多少种方案?
解题思路:
赤果果的多重背包,简单搞一下就好了。席八!烦烦烦。今天绝对是出门刷提前没看黄历,刚开始套了一个多重背包板子,蓝而跑出来的答案并不对,改来改去就错在细节的地方。
Lightoj 1231 - Coin Change (I)
题目描述:
就是有n种硬币,每种硬币有两个属性(价值,数目)。问用给定的硬币组成K面值,有多少种方案?
解题思路:
赤果果的多重背包,简单搞一下就好了。席八!烦烦烦。今天绝对是出门刷提前没看黄历,刚开始套了一个多重背包板子,蓝而跑出来的答案并不对,改来改去就错在细节的地方。
#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int mod = 100000007; const int maxn = 1010; int dp[60][maxn], a[60], c[60]; int main () { int T; scanf ("%d", &T); for (int t=1; t<=T; t++) { int n, k; scanf ("%d %d", &n, &k); memset (dp, 0, sizeof(dp)); dp[0][0] = 1; for (int i=1; i<=n; i++) scanf ("%d", &a[i]); for (int i=1; i<=n; i++) scanf ("%d", &c[i]); for (int i=1; i<=n; i++) for (int j=0; j<=c[i]; j++) for (int x=k; x>=a[i]*j; x--) { dp[i][x] = (dp[i][x] + dp[i-1][x-a[i]*j]) % mod; } printf ("Case %d: %d\n", t, dp [k]); } return 0; }
相关文章推荐
- Java 7 Fork/Join 并行计算框架概览
- Java语言基础之String类
- AndroidStudio插件-GsonFormat快速实现JavaBean
- WIFI 的 传输信道 与标准 WIFI的频道 传输能力
- 自己的理解JVM
- Extjs中一定时间间隔调用方法
- 解决U盘在mac air下格式化后在windows上无法显示
- Hive 参数
- 偏移注入payload构造技巧实战+Access注入
- verilog HDL中wire和reg的区别
- nyoj60谁获得的奖学金最高
- 根据枚举HashCode转换为对应枚举值
- 给空签名包进行签名以及找不到keystore证书链问题的解决方案
- 干净退出0MQ
- 设计模式案列
- linux设备驱动之输入(input)子系统——核心层实现
- string.Split()的用法
- Fork and Join: Java也可以轻松地编写并发程序
- Ubuntu上安装JAVA JDK
- scala+play2.2.2+slick2.0.2 + mysql5.0整合之一---基础环境搭建篇