相邻数字+(正月点灯笼的动态规划2)(递归+DP)---JAVA
原创
©著作权归作者所有:来自51CTO博客作者Frank___7的原创作品,请联系作者获取转载授权,否则将追究法律责任
思路分析
代码实现
递归实现
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]);
}
}