题解 | #打家劫舍(二)#

打家劫舍(二)

http://www.nowcoder.com/practice/6a8b2ceb3f8f4e5891939d7d7cbbd2c4

在一的基础上改进,做两个dp分别是代表arr[0 ~ n-2],arr[1 ~ (n-1)]. import java.util.*; public class Main{

public static int process(int[] arr,int n){
    int[]dp1=new int[n];
    int[]dp2=new int[n];
    dp1[1]=arr[0];
    dp2[1]=arr[1];
    int res=Math.max(arr[0],arr[1]);
    for(int i=2;i<n;i++){
        dp1[i]=Math.max(dp1[i-2]+arr[i-1],dp1[i-1]);
        dp2[i]=Math.max(dp2[i-2]+arr[i],dp2[i-1]);
        res=Math.max(dp1[i],dp2[i]);
    }
    return res;
}


public static void main(String[]args){
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int[]arr=new int[n];
    for(int i=0;i<n;i++)
        arr[i]=sc.nextInt();
    System.out.print(process(arr,n));
}

}

全部评论

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务