思路分析

相邻数字+(正月点灯笼的动态规划2)(递归+DP)---JAVA_算法

代码实现

递归实现

package com.kuang.study.lanqiao;


public class Main {
    public static void main(String[] args) {
       int arr[]={1,2,4,1,7,8,3};
        int max = d(arr,arr.length-1);
        System.out.println(max);

    }
    public static int d(int[] arr,int n){
        if(n==0){
            return arr[0];
        }else if(n==1){
            return Math.max(arr[0],arr[1]);
        }else {
            return Math.max(d(arr,n-2)+arr[n],d(arr,n-1));
        }
    }
}

非递归实现

package com.kuang.study.lanqiao;


import java.util.Arrays;

public class Main {
    public static int opt[]=new int[7];
    public static void main(String[] args) {
       int arr[]={1,2,4,1,7,8,3};
       opt[0]=arr[0];
       opt[1]=Math.max(arr[0],arr[1]);
        for (int i = 2; i < arr.length; i++) {
            opt[i]=Math.max(opt[i-2]+arr[i],opt[i-1]);
        }
        System.out.println(Arrays.toString(opt));
        System.out.println(opt[arr.length-1]);
    }
}