动态规划,运筹学的一个分支,求解决策过程最优化的过程,多阶段决策最优解模型
1、最优子结构,
2、无后效性
3、重复子问题
状态转移公式,dp数组,理解数组下标及数组值的含义
/**
* java 求斐波那契数列(1,1,2,3,5...)的第n项,从1开始数起 动态规划思想实现
* @param n
* @return
*/
static int fib(int n){
if(n<=1) return n;
int[] dp = new int[n+1];
dp[0] = 0;
dp[1] = 1;
for (int i = 2; i <=n ; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
/**
* 求第n的斐波那契数, 用递归实现
* @param number
* @return
*/
static int fibonacci(int number) {
if ((number == 1) || (number == 2))
return 1;
else
return fibonacci(number - 1) + fibonacci(number - 2);
}