摘要: 题目大意:也是硬币兑换问题,与147、674用同样的方法即可解决。 1 #include 2 #include 3 #define MAXN 30001 4 5 const int coin[5] = {1, 5, 10, 25, 50}; 6 long long dp[MAXN]; 7 8 int main() 9 {10 #ifdef LOCALi11 freopen("in", "r", stdin);12 #endif13 memset(dp, 0, sizeof(dp));14 dp[0] = 1;15 for (int k = 0; k .. 阅读全文
posted @ 2013-08-27 15:34 xiaobaibuhei 阅读(157) 评论(0) 推荐(0)
摘要: 题目大意:有11种类型的硬币,给一定的数额,计算有多少中不同的硬币兑换方案。 硬币兑换问题,要注意的就是浮点数转化成整数的误差问题。对硬币金额除以5可以减小计算,计算结果要用long long 类型保存。 1 #include 2 #include 3 #define MAXN 6000+10 4 5 const int coin[11] = {1, 2, 4, 10, 20, 40, 100, 200, 400, 1000, 2000}; 6 long long dp[MAXN]; 7 8 int main() 9 {10 #ifdef LOCAL11 freopen(... 阅读全文
posted @ 2013-08-27 15:07 xiaobaibuhei 阅读(150) 评论(0) 推荐(0)
摘要: 题目大意:有5中类型的硬币:1分,5分,10分,25分和50分,现在给你一定数额的金钱n(以分为单位),让你计算有多少中方法可以将这个数额的钱换成硬币,不同次序算同一种,如1,1,5和1,5,1算一种。 硬币兑换问题,经典DP。可以dp[i]保存换i数额的硬币兑换方法数,如果用dp[i] += dp[i-coin]的递推公式的话计算出的是考虑顺序的兑换方法数,所以分五次转移,这样就可以避免重复。理解的不是太清楚,个人感觉就是构造时按照大小顺序先后构造,只考虑1,1,5的方案,不会计算1,5,1和5,1,1这样的方案。 1 #include 2 #include 3 #define M... 阅读全文
posted @ 2013-08-27 11:37 xiaobaibuhei 阅读(124) 评论(0) 推荐(0)