POJ 1276 取款机零钱组合问题 动态规划
本题为多重背包问题,即每种零钱的个数是有限个,求不超过目标钱数的可以组合出的最大钱数
采用DP的思想,先对目标钱数以内的所有面额做逆向遍历,初始dp[0] = true,即0元可凑出
在此基础上如果当前的stat可以凑出,那么继续组合出更大的钱数,记下当前有限个零钱和前面的
零钱一起可以凑出的不超过目标钱数的所有合法的值。最后从money逆向打印记下的最大的值即可
Source Code
Problem: 1276 | User: yangliuACMer | |
Memory: 640K | Time: 516MS | |
Language: C++ | Result: Accepted |