• leetcode面试题 17.16. 按摩师


    leetcode面试题 17.16. 按摩师

    又一道动态规划题目

    动态规划的核心就是总结出一个通行的方程.

    但是这道题似乎不太适合使用递归的方式.

    所以使用for循环遍历数组.

    class Solution {
        public int massage(int[] nums) {
            if(nums.length==0)return 0;
            if (nums.length==1)return nums[0];
            //动态规划,这个采用了分类讨论的思想
            //[2,7,9,3,1]为例
            //如果你在7的位置上.有两种情况1.工作2.不工作
            //于是用数组表示就是len[i][1]与len[i][0]
            //这个二维数组的值记录经过的路径的总值
            int [][] len=new int[nums.length][2];
            len[0][0]=0;
            len[0][1]=nums[0];
            //遍历这个数组,用二维数组的值作为记录
            for(int i=1;i<=nums.length-1;i++){
                //假如你在9位置上
                //len[i][0]代表你不工作
                //有两种可能1.昨天你工作了2.昨天你不工作
                //那么我们只要找出两种可能中最大的一种就可以
                len[i][0]=Math.max(len[i-1][0],len[i-1][1]);
                //如果jin'tian'gong
                len[i][1]=len[i-1][0]+nums[i];
            }
            return Math.max(len[nums.length-1][0],len[nums.length-1][1]);
        }
        public static void main(String[] args) {
            Solution solution = new Solution();
            System.out.println(solution.massage(new int[]{2,7,9,3,1}));
        }
     }
    
  • 相关阅读:
    vmareworkstation 15 安装密钥
    Linux进入ftp界面退出方法
    linux安装mysql(5.1.73)
    安装http服务,用http搭建web网
    telnet远程连接
    yum出现问题解决方法
    samba
    nfs搭建
    解决VMwareworkstation无法在windows上运行
    2 shell编程
  • 原文地址:https://www.cnblogs.com/yanzezhong/p/12561754.html
Copyright © 2020-2023  润新知