六大算法之三:动态规划【转载】
){ //如果是第一列,直接跟他上面数字相加 dp[i][j] = dp[i-1][j] + n[i][j]; }else{ //如果不是第一列,比较他上面跟上面左面数字谁大,谁大就跟谁相加,放到这个位置 dp[i][j] = Math.max(dp[i-1][j-1], dp[i-1][j]) + n[i][j]; } max = Math.max(dp[i][j], max); } } return max; } 优化:动态规划中每一个需要创建一个二维数组的解法,都可以换成只创建一个一维数组的滚动数组解法,依据的规则是一般二维数组中存放的是所有的结果,但是一般我们需要的结果实在二维数组的最后一行的某个值,前面几行的值都是为了得到最后一行的值而需要的,所以可以开始就创建跟二维数组最后一行一样大的一维...阅读全文