POJ 1276 取款机零钱组合问题 动态规划

本题为多重背包问题,即每种零钱的个数是有限个,求不超过目标钱数的可以组合出的最大钱数

采用DP的思想,先对目标钱数以内的所有面额做逆向遍历,初始dp[0] = true,即0元可凑出

在此基础上如果当前的stat可以凑出,那么继续组合出更大的钱数,记下当前有限个零钱和前面的

零钱一起可以凑出的不超过目标钱数的所有合法的值。最后从money逆向打印记下的最大的值即可

Source Code

Problem: 1276   User: yangliuACMer
Memory: 640K   Time: 516MS
Language: C++   Result: Accepted


posted @ 2011-12-23 13:04  yangleo  阅读(310)  评论(0编辑  收藏  举报