通常用来求解最优解
举例 斐波那契数列
有自顶向下(递归,时空复杂度高)和自底向上(迭代)两种解法
剪绳子
自下而上求出最优解
class Solution { public int cuttingRope(int n) { if(n<2) { return 0;} if(n==2) { return 1;} if(n==3) { return 2;} int[] ans = new int[n+1]; ans[0]=0; ans[1]=1; ans[2]=2; ans[3]=3; int max=0; for(int i =4;i<=n;i++) { max=0; for(int j=1;j<=i/2;j++) { int an = ans[j]*ans[i-j]; if(max<an) max=an; ans[i]=max; } } max=ans[n]; return max; } }