动态规划,求数组不相邻数字的最大子串值

参考:https://www.bilibili.com/video/BV12W411v7rd

思路:

这是一道典型的动态规划问题

可以把这道题改为到底取不取前面数字,

并且从数组元素个数递增开始算

 

代码

import java.util.Arrays;

public class OptMain {
    public static void main(String[] args) {
        int[] arr = {4,1,1,9,1,10};
        dp_opt(arr);
    }

    private static void dp_opt(int[] arr){
        int[] temp = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            if(i == 0){
                temp[0] = arr[0];
            }
            else if(i == 1){
                temp[1] = Math.max(arr[0],arr[1]);
            }
            else {
                temp[i] = Math.max(temp[i-2] + arr[i],temp[i-1]);
            }
        }
        System.out.println(Arrays.toString(temp));
    }
}

 

posted @ 2020-06-20 10:55  冬马党  阅读(239)  评论(0编辑  收藏  举报