1、动态规划是一种编程原理,可以通过将非常复杂的问题分成较小的子问题来解决。
2、这个原则类似于递归,但不同于递归,每个不同的子问题只能解决一次。
使用流程
确定适合上述问题的递归关系。
初始存储器,数组,矩阵的初始值。
确保当我们进行递归调用(可以访问子问题的答案)时,总是提前解决。
实例
public class dpsolution { static int getvalue(int[] values, int rodlength) { int[] subsolutions = new int[rodlength + 1]; for (int i = 1; i <= rodlength; i++) { int tmpmax = -1; for (int j = 0; j < i; j++) tmpmax = math.max(tmpmax, values[j] + subsolutions[i - j - 1]); subsolutions[i] = tmpmax; } return subsolutions[rodlength]; } public static void main(string[] args) { int[] values = new int[]{3, 7, 1, 3, 9}; int rodlength = values.length; system.out.println(max rod value: + getvalue(values, rodlength)); }}
以上就是java动态规划实例分析的详细内容。
