您的位置:首页 > 其它

Find More Coins

2016-03-13 14:46 260 查看
         ———————————应要求删除———————————————

1.深度优先搜索

        题意是给定总金额,硬币数值,输出恰好能够凑出总金额的硬币组合方法,由于是多解题,要求按字典序最小输出,处理这个字典序只需实现对数组进行排序,为了方便直接调用了stl::sort,然后在搜索的时候加上一些限定条件。

        注意要考虑到重复金额的硬币,并由此作相应的剪枝操作,最后一个测试点估计含有大量无效重复数据,未给出恰当的剪枝优化就很容易TLE。

2.动态规划

         状态转移方程:dp[ i ] [ j ] = max ( dp[ i - 1 ][ j - a[ i ] ] + a[ i ], dp[ i - 1 ][ j ] )

         dp[ i ][ j ]代表在处理第i个硬币时,期望金额为j。存在两种可能性,用到了第i个硬币,没有用到第i个硬币。如果没有用到第i个硬币,说明在前一种情况,也就是处理i-1个硬币且期望金额为j,是当前的最优解。如果用到了,就要回到期望金额为 j - a[i ]的情况,并加上第i个硬币的价值,为当前最优解。判断是否使用第i个硬币由这两个值哪个更大决定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: