一、算法介绍:
-
动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。
-
动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
-
与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。 (
即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 ) -
动态规划可以通过填表的方式来逐步推进,得到最优解.
二、 最佳实践-背包问题:
题目来源于(蓝桥杯)
题目描述 小明有一个容量为 V 的背包。
这天他去商场购物,商场一共有 N 件物品,第 i 件物品的体积为 wi,价值为 vi。
小明想知道在购买的物品总体积不超过 V 的情况下所能获得的最大价值为多少,请你帮他算算。
输入描述 输入第 1 行包含两个正整数N,V,表示商场物品的数量和小明的背包容量。
第 2∼N+1 行包含 2 个正整数w,v,表示物品的体积和价值。
1≤N≤102,1≤V≤103,1≤wi,vi≤10^3。
输出描述 输出一行整数表示小明所能获得的最大价值。
输入输出样例 示例 1
输入
5 20 1 6 2 5 3 8 5 15 3 3 输出
37